javascript - 无法读取 null 的属性 'indexOf'

标签 javascript jquery

代码有效,但控制台日志显示无法读取 null 的属性“indexOf”

在jsfiddle.net中是看不到的,这里是我想要的demo。

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();
    }
});

最佳答案

正在提示 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 或其他实现。

关于javascript - 无法读取 null 的属性 'indexOf',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25298629/

相关文章:

javascript - 背景图像缩放到屏幕大小而不是内容

jQuery - 如果前一个元素没有特定的类,则删除该元素

javascript - 使用 javascript 从 html 搜索文本

javascript - 元素不会在窗口更改时向后滑动

javascript - 从服务器获取 Angular 工厂中新创建资源的 ID

php - 使用 cookie、javascript 和移动重定向查看完整站点

javascript - 理解闭包和作用域

javascript - 获取动态表中某个TD的最高值

javascript - jQuery中如何根据单选按钮的选择来显示和隐藏div元素

javascript - 使用 html 文件 api 和 javascript 搜索本地目录