Javascript 无法读取属性';指数';空的
代码正常工作,但控制台日志show无法读取null的属性'indexOf' 它不能在jsfiddle.net中看到,顺便说一句,这里是我想要的演示 因为标记很糟糕,所以我必须找到br的每个nodevalue,并获得以作詞, 作曲, 編曲, 及監製. 它可以工作,但为什么控制台日志中会出现错误Javascript 无法读取属性';指数';空的,javascript,jquery,Javascript,Jquery,代码正常工作,但控制台日志show无法读取null的属性'indexOf' 它不能在jsfiddle.net中看到,顺便说一句,这里是我想要的演示 因为标记很糟糕,所以我必须找到br的每个nodevalue,并获得以作詞, 作曲, 編曲, 及監製. 它可以工作,但为什么控制台日志中会出现错误 $('br').each(function () { if ((this.nextSibling.nodeValue.indexOf('作詞') > -1) || (this.nextSib
$('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();
}
});
我认为将您的代码更改为以下代码会起作用:
$('br').each(function () {
console.log($(this).get(0).nextSibling.nodeValue.indexOf('作詞') > -1);
});
它抱怨
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();
}
});
请注意,我使用的
Array.indexOf
适用于Internet Explorer 9+。因此,如果您需要支持IE8,您必须使用polyfill或其他实现。这太棒了,谢谢!但是我有一个问题,为什么在行刑后的乞讨处会有一个?我还以为他们被移除了?因为br元素之间有一个文本元素。第一个br有一个nextSibling,它是一个文本元素,nextSibling不是下一个br。该文本元素恰好是一个空字符串。那么如何删除该内容?您正在删除后跟特定文本的br
元素。删除br
后跟空文本是一样的!如果此.nextSibling.nodeValue.trim()=='',则删除br和空文本节点。是否可以更新代码?我尝试了var nodeValue=this.nextSibling.nodeValue.trim();它不起作用