JS IOS问题:null不是对象

时间:2018-04-18 13:15:38

标签: javascript ios null

我有两个数组:

var tableIdsSold = [3, 38, 43, 44];
    var tableIdsBook = [40];

我从后端收到数组元素,就在" body"标签打开。 然后,在" body"之前标签关闭,我把链接到" main.js"。 在" main.js"我有这个代码runnin:

for (var i = 0; i < tableIdsSold.length; i++) {
document.querySelector('[data-circleId="' + tableIdsSold[i] + '"]').classList.add('purchased');

}

和第二个数组相同。 所以我只是运行数组,使用数组元素作为id。当脚本找到具有正确id的元素时 - 它应该将类添加到html标记&#34; circle&#34;。 所以问题是:脚本无处不在,但在IOS中却没有。如果我用mac(safari / chrome)或iphone 5/6(safari / chrome)打开此页面,我在控制台中出现此错误:

  

TypeError:null不是对象(评估&#39; document.querySelector(&#39; [data-circleId =&#34;&#39; + tableIdsSold [i] +&#39;&#34; ]&#39;。)班级列表&#39)

脚本在&#34; window.onload&#34;中运行功能。导致问题的原因是什么? 抱歉英文不好

2 个答案:

答案 0 :(得分:0)

  

Document方法querySelector()返回文档中与指定选择器或选择器组匹配的第一个Element。如果未找到匹配项,则返回null

您需要检查此document.querySelector('[data-circleId="' + tableIdsSold[i] + '"]')是否为null,然后无需执行操作。

CODE SNIPPET

for (var i = 0; i < tableIdsSold.length; i++) {
    let circleId = document.querySelector('[data-circleId="' + tableIdsSold[i] + '"]');
    if (circleId) {
        circleId.classList.add('purchased');
    }
}

答案 1 :(得分:0)

所以问题是:不知何故,ios html解释器将“data-circleId”类写为“data-circleid”。由于这个原因,我的JS脚本找不到“data-circleId”。