代码工作但控制台日志显示无法读取属性'indexOf'为null
在jsfiddle.net中看不到,顺便说一下,这是我想要的演示。
因为标记很糟糕,所以我必须找到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();
}
});
答案 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);
});