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

这段代码为什么输出#text?

这段代码为什么输出#text?

慕粉3541299 2016-10-11 16:39:50
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Document</title></head><body><select name = "edu" id = "edu"><option value = "博士">博士~~~</option><option value = "本科" id="benke">本科~~~</option><option value = "大专">大专~~~</option><option value = "幼儿园">幼儿园~~~</option></select><script>var gra = document.getElementById("edu");var A = gra.childNodes;alert(A[0].nodeName);</script></body></html>第一个子节点的nodeName不应该是option么?还有就是,当alert(A[2].nodeValue)时,为什么不输出博士,而是空白
查看完整描述

3 回答

已采纳
?
fantacy吴贝

TA贡献11条经验 获得超10个赞

nodeName返回节点名称,这点你的理解是对的,但元素节点返回元素名,文本节点就会返回#text。正确的从var gra=document.getElementById("edu");var A = gra.childNodes;alert(A[1].firstChild.nodeValue);

nodeValue与nodeName推荐看慕课网JavaScript进阶篇9-7.

查看完整回答
反对 回复 2016-10-12
  • 慕粉3541299
    慕粉3541299
    如何解决childNodes的空白节点问题啊- -!每次要用firstChild或者lastChild来选节点的时候都会遇到空白节点的问题 好麻烦。。
  • fantacy吴贝
    fantacy吴贝
    删除他们之间的空格是最简单的办法,或者通过循环遍历子节点,找到第一个元素节点是一个更好的办法。
?
stone310

TA贡献361条经验 获得超191个赞

childNodes指所有子节点(包括文本节点和元素节点),当你代码这么写:

<select name = "edu" id = "edu">
  <option value = "博士">博士~~~</option>
  <option value = "本科" id="benke">本科~~~</option>
  //这里select和option之间,option和option之间有空白,这段空白就是文本节点;

childNodes[0]指得是中间那段空白(文本节点),nodeName是#text;

childNodes[1]为“博士”,nodeName是OPTION;

childNodes[2]为空白,nodeName是#text;

以此类推;

可以用children(只获取元素节点)来代替childNodes


查看完整回答
反对 回复 2016-10-11
  • haoya
    haoya
    这个和浏览器也有关系吧。
  • stone310
    stone310
    恩IE低版本有不同,好像是8还是9以下
?
其实我真的不是东北人

TA贡献105条经验 获得超66个赞

<!DOCTYPE html>
<html>
<head>
   <meta charset="UTF-8">
   <title>Document</title>
</head>
<body>
<select name="edu" id="edu">
   <option value = "博士">博士~~~</option>
   <option value = "本科" id="benke">本科~~~</option>
   <option value = "大专">大专~~~</option>
   <option value = "幼儿园">幼儿园~~~</option>
</select>


<script>

   var gra = document.getElementById("edu");
   for(var i=0;i<gra.childNodes.length;i++)
   {
       if(gra.childNodes[i].nodeType == 1)
       {
           console.log(gra.childNodes[i].firstChild.nodeValue);
       }
   }
</script>
</body>
</html>

查看完整回答
反对 回复 2016-10-11
  • 3 回答
  • 0 关注
  • 1957 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信