为了账号安全,请及时绑定邮箱和手机立即绑定

这段代码有什么问题?为什么文本没有加到div上

<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>无标题文档</title>

<style type="text/css">


.message{    

width:200px;

height:100px;

background-color:#CCC;}

</style>

</head>

<body>

<div class="message">

</div>

<script type="text/javascript">

var d=document.getElementsByTagName("div");

var newText=document.createTextNode("i love javascript");

d.appendChild(newText);

</script> 


</body>

</html>


正在回答

4 回答

var d=document.getElementsByTagName("div");这里返回的是一个数组。

正确答案是:var d=document.getElementsByTagName("div")[0];

2 回复 有任何疑惑可以回复我~
#1

qq_梦里_0 提问者

为什么这里返回是的一个数组?有时候就很弄不懂。就像有一次一个例子里面document.getElementByTagName("ul");也是返回的一个数组。但是整个文档里面也只有一个ul。
2016-07-25 回复 有任何疑惑可以回复我~
#2

BurtPu 回复 qq_梦里_0 提问者

JavaScript是由值决定变量的类型,document.getElementsByTagName(标签名)返回的是在当前html文件中存在的这个标签元素节点集合,即返回的类型是NodeList。集合这种类型和数组相似,对于js中的集合我还不太了解。如果学习强类型语言,你就明白了,每一个变量都得指定数据类型。如Java/C/C++/C#等语言。
2016-07-26 回复 有任何疑惑可以回复我~
#3

qq_梦里_0 提问者 回复 BurtPu

我已经懂了,谢谢你。
2016-07-26 回复 有任何疑惑可以回复我~

getElementsByTagName() 方法可返回带有指定标签名的对象的集合。getElementsByTagName() 方法返回元素的顺序是它们在文档中的顺序。返回的是此标签的集合,虽然只有一个div,但还是要用【0】从集合中取出第一个div

2 回复 有任何疑惑可以回复我~
#1

qq_梦里_0 提问者

听君一席话,顿时豁然开朗。
2016-07-25 回复 有任何疑惑可以回复我~

少了document.body.appendChild(d);

你得把新建的节点加入到body整个大的文档里面去啊,你原本的代码只是把新建的文本节点“i love javascript”加入了你自己获取的元素节点div(d)中,所以显示不出来。

1 回复 有任何疑惑可以回复我~
#1

qq_梦里_0 提问者

新建的节点加入到了div里面,div本身在body里面,还要加吗?我刚才试了一下把新建的节点加到body里面去了,还是没反应呢。
2016-07-25 回复 有任何疑惑可以回复我~
#2

DollarCat 回复 qq_梦里_0 提问者

已经有最佳答案啦,至于getElementByTagName的话规定返回的是数组,那他就是一个数组,不管有多少个。
2016-07-25 回复 有任何疑惑可以回复我~

看不出有什么问题

0 回复 有任何疑惑可以回复我~
#1

qq_梦里_0 提问者

在浏览器里面看提示的错误是 undefined is not a function.这句话意思好像是函数没有定义。可是那个appendChild()函数是系统的呀!
2016-07-25 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

这段代码有什么问题?为什么文本没有加到div上

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信