我正在尝试编写一个对某些段落进行排序的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;)条目。这里出了什么问题?感谢您的任何意见。
答案 0 :(得分:3)
“Caine”条目位于第四个段落中。该脚本失败,因为第三段没有文本。
这是第三段:
<p><br></p>
文字为null
,因此if
语句在尝试访问.indexOf()
时会出现例外情况。
(编辑 - 一个好的评论指出,正在检查某个值的<br>
标记,但这也是空的。)