使用index of 时发生报错: Uncaught TypeError: Cannot read property ‘indexOf‘ of null 之问题解决

我们通常使用 index of 的方法进行 for循环的排重,或者获取索引。
通过判断是否位-1的情况,来进行排重。
比如:indexOf(“?”) != -1;

在最近开发的时候,我需要获取a标签的href属性,然后给href属性 给a标签上增加自定义属性,使用index的方法,发现报错了。

报错代码:

<script>
    var aTargent = document.getElementsByTagName('a');
    var aTargentUrl;
    for (var i = 0; i < aTargent.length; i++) {
        let aHrefOld = aTargent[i].getAttribute("href");
        if (aHrefOld.indexOf("?") != -1) {
            let aHrefNew = aHrefOld.split("?")[0];
            aTargent[i].setAttribute("track-href", aHrefOld);
            aTargent[i].setAttribute("href", aHrefNew);
        }
    }
</script>

运行代码,会发现控制台报这个错误:

track-href.html:54 Uncaught TypeError: Cannot read property 'indexOf' of null
    at track-href.html:54

在这里插入图片描述
找了很久也没找到是什么原因,后来发现是因为有的标签缺少 href属性导致index of 的时候 是null ,产生报错。
因为开发的页面里有很多的a标签,但是有的a标签是做按钮使用的,所以会造成a标签没有href属性: 比如

<a role="button" class="submit-btn">确认</a>

解决错误 在进行index of 的时候,先把null的情况排除,即无href的标签。添加 != null

<script>
    var aTargent = document.getElementsByTagName('a');
    var aTargentUrl;
    for (var i = 0; i < aTargent.length; i++) {
        let aHrefOld = aTargent[i].getAttribute("href");
        if (aHrefOld != null && aHrefOld.indexOf("?") != -1) {
            let aHrefNew = aHrefOld.split("?")[0];
            aTargent[i].setAttribute("track-href", aHrefOld);
            aTargent[i].setAttribute("href", aHrefNew);
        }
    }
</script>

最后很完美的解决了问题,而且没有报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值