消失的nodeValue

时间:2013-02-01 22:06:22

标签: javascript html dom

我正在尝试编写一个对某些段落进行排序的Javascript。这是我正在排序的HTML的一小部分内容:

<p>Brown, John, 2010, <a href="#">Link</a></p>

<p>Bush, C.A., 2010, <a href="#">Link</a>: More info.</p>

<p><br></p>
<h3><a name="c">C</a></h3>

<p>Caine, J.S., and Minor, S.A., 2010, <a href="#">Link</a>: More</p>

此Javascript正在查找包含&#34; 2010&#34;的条目(这是4段中的3段):

var paras = document.getElementsByTagName("p");
alert( paras.length );  // 4, which is what I expect!

for( i=0; i < paras.length ; i++ ) {
    var node0_text = paras[i].childNodes[0].nodeValue;

    if ( node0_text.indexOf('2010') ) {
        alert( node0_text ); // not returning everything that I expect it to.
    };
}

当我运行时,前两个条目(&#34; Brown&#34;&#34; Bush&#34;)会像我预期的那样弹出警告框。然后剧本似乎死了。它不会显示第三个(&#34; Caine&#34;)条目。这里出了什么问题?感谢您的任何意见。

指向它的链接:http://jsfiddle.net/Jrmy/6MP2W/5/

1 个答案:

答案 0 :(得分:3)

“Caine”条目位于第四个段落中。该脚本失败,因为第三段没有文本。

这是第三段:

<p><br></p>

文字为null,因此if语句在尝试访问.indexOf()时会出现例外情况。

编辑 - 一个好的评论指出,正在检查某个值的<br>标记,但这也是空的。)