关于nodeValue的困惑

遍历DOM树节点的nodeValue属性碰到了一个问题。我本意是想取到nodeValue值不为null的节点。

<div id="box">
    <p id="para" class="paragraph">
    这里要写一些文本!!!!!!!!!!!<br>
    这里要写一些文本!!!!!!!!!!!<br>
    这里要写一些文本!!!!!!!!!!!
    </p>
</div>
<script type="text/javascript">
       var box = document.getElementById(‘box‘);
       console.log(box.childNodes);
       var arr = [];
       for(var i = 0; i < box.childNodes.length; i++){
           if(box.childNodes[i].nodeValue != null ){
               arr.push(box.childNodes[i]);
           }
       }
       console.log(arr);
</script>

Chrome控制台下返回的结果分别是:

[text, p#para.paragraph, text]
[text, text]

元素节点(element node)nodeValue值为null,这个众所周知。属性节点nodeValue值为属性值,文本节点nodeValue值为文本内容。如下,引用自W3C

The values of nodeNamenodeValue, and attributes vary according to the node type as follows:

Interface nodeName nodeValue attributes
Attr name of attribute value of attribute null
CDATASection #cdata-section content of the CDATA Section null
Comment #comment content of the comment null
Document #document null null
DocumentFragment #document-fragment null null
DocumentType document type name null null
Element tag name null NamedNodeMap
Entity entity name null null
EntityReference name of entity referenced null null
Notation notation name null null
ProcessingInstruction target entire content excluding the target null
Text #text content of the text node null

那么照说,属性节点符合遍历条件,那么应该被push到attr这个数组中,可是结果属性节点并没有被push进新数组。

时间: 2024-07-30 03:23:34

关于nodeValue的困惑的相关文章

bzoj2186【SDOI2008】沙拉公主的困惑

2186: [Sdoi2008]沙拉公主的困惑 Time Limit: 10 Sec  Memory Limit: 259 MB Submit: 2363  Solved: 779 [Submit][Status][Discuss] Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁国现在所有真钞票的数量.现在,请你帮助沙拉公主解决这个问题,由于可能张

从HelloWorld启航——数据库连接字符串的困惑

程序员方阵 数据库连接字符串的困惑 数据库连接字符串的组成 驱动程序 ODBC OLE DB JDBC 比较 数据库链接字符串大全 SQL Server 2005 SQL Native Client ODBC Driver SQL Native Client OLE DB Provider SqlConnection NET MySQL MyODBC OLE DB OleDbConnection NET MySqlConnection NET Oracle ODBC OLE DB OleDbCo

周鸿祎:先做产品还是先谈情怀,这让我很困惑

问:要数中国创业型一号产品经理,应该是周鸿祎了吧. 周鸿祎:真不敢当.我最近也很困惑,三观也被颠倒了.过去我们谈什么都先谈产品,你要先根据用户需求做产品,在体验上做到极致,在产品体验基础之上才能谈情感认同或身份认同,才能到情怀,对吧?但最近很多人,人家先做营销,先做情感认同,完全倒过来了,粉丝就是产品,给用户什么产品反而不重要了.包括最近罗胖卖月饼,我就琢磨这是一次性的呢还是可持续的呢?比如锤子手机,第一次做产品有很多缺点,当把用户期望吊到很高以后,这些缺点靠情怀能克服吗? 问:今天互联网公司动

innerHTML nodeValue 的区别

DOM中的节点是分好几种类型,常见的有1.文档节点 (document,唯一)2.元素节点 (那些个标签div,p之类)3.属性节点(class,src这种)4.文本节点(插入在p,div内的文本)其它.. 其中element.nodeValue,是节点的值,其中属性节点和文本节点是有值的,而元素节点没有值. innerHTML以字符串形式返回该节点的所有子节点及其值 举个例子 : <p id="example" title="texts"> 这是一段文

#强烈推荐#nodeValue, value的区别!

今儿遇到个关于nodeValue与value难题,不知该如何区分,但问题总算解决了,总结了一条心得:有问题查官方文档就好,百度不太具体啊... nodeValue和value在MDN技术文档里已经明确区分了(可点击进入技术文档) 我本来写了个表单,想要获取<input type = 'textarea' id = 'text'/>的内容,用document.getElementById('text').firstChild.nodeValue获取却没有反应,后来看了技术文档,才知道,nodeV

nodeName,nodeValue,nodeType,typeof 的区别

????nodeName 属性含有某个节点的名称.? 元素节点的 nodeName 是标签名称? 属性节点的 nodeName 是属性名称? 文本节点的 nodeName 永远是 #text? 文档节点的 nodeName 永远是 #document? ? nodeValue 节点值 对于文本节点,nodeValue 属性包含文本. 对于属性节点,nodeValue 属性包含属性值. nodeValue 属性对于文档节点和元素节点是不可用的. ? nodeType 属性可返回节点的类型. 最重要

关于argv和strncpy()的困惑

遇到一个问题,命令行参数复制到字符串后打印出来的结果与直接打印命令行参数的结果不一致. 不清楚是哪里的问题. #include <stdio.h> #include <string.h> #define LEN 5 int main(int argc, char* argv[]) { char s1[LEN]; char s2[LEN]; for(int i = 0; i<LEN; i++) { s1[i] = '\0'; s2[i] = '\0'; } printf(&qu

JavaScript你所不知道的困惑(2)

困惑一: var obj1 = new Object(); var obj2 = obj1; obj1.name = "阳光小强"; alert(obj2.name); //输出结果:阳光小强 JavaScript中的5个基本类型:Undefined.Null.Boolean.Number和String都是按值访问的,可以操作保存在变量中的实际的值,内存空间如下: var num1 = 5; var num2 = num1; 引用类型的值是保存在内存中的对象,JavaScript不允许

JavaScript你所不知道的困惑(1)

困惑一: 先看一个例子: function test(){ message = "hi"; } test(); alert(message); 会输出字符串"hi" 在函数内部使用var定义的变量是局部变量,省略var操作符的变量是全局变量. 困惑二: alert(undefined == null) 结果是"true" 我们知道在js中分为基本类型和引用类型,基本类型包括number.string.boolean.undefined.null.