无法读取null的属性'indexOf'

时间:2014-08-14 01:17:34

标签: javascript jquery

代码工作但控制台日志显示无法读取属性'indexOf'为null

在jsfiddle.net中看不到,顺便说一下,这是我想要的演示。

http://jsfiddle.net/cw6cgg27/

因为标记很糟糕,所以我必须找到br的每个节点值,然后从作词,作曲,编曲和监制开始。它工作,但为什么在控制台日志中出现错误?

$('br').each(function () {
    if ((this.nextSibling.nodeValue.indexOf('作詞') > -1) || (this.nextSibling.nodeValue.indexOf('作曲') > -1) || (this.nextSibling.nodeValue.indexOf('編曲') > -1) || (this.nextSibling.nodeValue.indexOf('監製') > -1)) {

        $(this.nextSibling).remove();
        $(this).remove();
    }
});

2 个答案:

答案 0 :(得分:2)

抱怨nextSibling不存在。你必须采取防御措施。

$('br').each(function () {
    if (!this.nextSibling) {
      return;
    }
    var nodeValue = this.nextSibling.nodeValue.trim();
    var invalid = ['', '作詞', '作曲', '編曲', '監製'];
    if (invalid.indexOf(nodeValue) !== -1) {
        $(this.nextSibling).remove();
        $(this).remove();
    }
});

请注意,对于Internet Explorer 9+,我使用Array.indexOf。因此,如果您需要支持IE8,则必须使用polyfill或其他实现。

答案 1 :(得分:0)

我认为将代码更改为可行的方法:

$('br').each(function () {
    console.log($(this).get(0).nextSibling.nodeValue.indexOf('作詞') > -1);
});