开发者问题收集

JS IOS问题:null不是对象

2018-04-18
2528

我有两个数组:

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 is not an object (evaluating 'document.querySelector('[data-circleId="' + tableIdsSold[i] + '"]').classList')

脚本在“window.onload”函数中运行。是什么导致了这个问题? 抱歉我的英语不好

2个回答

The Document method querySelector() returns the first Element within the document that matches the specified selector, or group of selectors. If no matches are found, null is returned.

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


代码片段

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

所以问题是:ios html 解释器不知何故将“data-circleId”类写为“data-circleid”。因此我的 JS 脚本无法找到“data-circleId”。

neku894
2018-04-18