我有两个数组:
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;中运行功能。导致问题的原因是什么? 抱歉英文不好
答案 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”。