我有两个数组:
var tableIdsSold = [3, 38, 43, 44];
var tableIdsBook = [40];
我在"body"标签打开后立即从后端接收数组元素。然后,在"body"标签关闭之前,我将链接指向"main.js"。在"main.js"中,我运行了以下代码:
for (var i = 0; i < tableIdsSold.length; i++) {
document.querySelector('[data-circleId="' + tableIdsSold[i] + '"]').classList.add('purchased');
}
第二个阵列也是如此。所以我只是运行数组,使用数组元素作为 id。当脚本找到具有正确 id 的元素时 - 它应该将类添加到 html 标签"circle"中。所以问题是:脚本在任何地方都可以工作,但在IOS中却不能。如果我在Mac(safari/chrome(或iPhone 5/6(safari/chrome(中打开此页面,则在控制台中出现此错误:
TypeError: null 不是对象(评估 'document.querySelector('[data-circleId="' + tableIdsSold[i] + '"]'(.classList'(
脚本在"window.onload"函数中运行。导致问题的原因是什么?对不起,英语不好
Document 方法
querySelector()
返回文档中与指定的选择器或选择器组匹配的第一个Element
。如果未找到匹配项,则返回null
。
您需要检查这是否document.querySelector('[data-circleId="' + tableIdsSold[i] + '"]')
空,然后无需执行操作。
代码片段
for (var i = 0; i < tableIdsSold.length; i++) {
let circleId = document.querySelector('[data-circleId="' + tableIdsSold[i] + '"]');
if (circleId) {
circleId.classList.add('purchased');
}
}
所以问题是:不知何故,ios html解释器将"data-circleId"类写为"data-circleid"。因此,我的JS脚本找不到"data-circleId"。