IE开发人员控制台中的神秘SCRIPT18错误

时间:2019-08-15 15:30:09

标签: javascript internet-explorer-11

我们在IE 11中收到这样的SCRIPT18错误:

enter image description here

这些错误在Chrome或Edge中不会发生。

Google尚未提供任何有用的信息;实际上,很少有链接甚至引用该错误(我认为SCRIPT18可能是Google索引的硬术语)。

代码如下:

var tbl = document.getElementById(R_TABLE_NAME);
if(tbl == null){tbl = test.document.getElementById(R_TABLE_NAME);}
for (var i=0; i<tbl.tBodies[0].rows.length; i++) {
// following line is 131:
    if (tbl.tBodies[0].rows[i].myRow && tbl.tBodies[0].rows[i].myRow.five.getAttribute('type') == 'checkbox' && tbl.tBodies[0].rows[i].myRow.five.checked) {
        checkedObjArray[cCount] = tbl.tBodies[0].rows[i];
        cCount++;
        cRow = i + 1;
        break;
    }
}

这是一个仅供内部使用的Web应用程序,因此我可以告诉用户他们需要使用edge或chrome,但这对我来说不是一个很好的解决方案,因为我们还有其他仍需要IE的Web应用程序。

此外,我发现一个浏览器上的错误被视为所有浏览器上的错误,因为我发现有时一个浏览器中的显式错误是另一浏览器中的隐藏错误。

1 个答案:

答案 0 :(得分:0)

有可能是您的条件有问题或您的条件未返回预期值,导致下面的行中出现此错误。

 if (tbl.tBodies[0].rows[i].myRow && tbl.tBodies[0].rows[i].myRow.five.getAttribute('type') == 'checkbox' && tbl.tBodies[0].rows[i].myRow.five.checked) {

我建议您尝试使用console.log()来查看每个条件返回的值。可以帮助您找到代码中的错误情况。

var tbl = document.getElementById("R_TABLE_NAME");

for (var i=0; i < tbl.tBodies[0].rows.length; i++) {
// following line is 131:
    console.log("con-1 " + tbl.tBodies[0].rows[i].myRow);
    console.log("con-2 " + tbl.tBodies[0].rows[i].myRow.five.getAttribute('type'));
    console.log("con-3 " + tbl.tBodies[0].rows[i].myRow.five.checked);
    if (tbl.tBodies[0].rows[i].myRow && tbl.tBodies[0].rows[i].myRow.five.getAttribute('type') == 'checkbox' && tbl.tBodies[0].rows[i].myRow.five.checked) {
        console.log("Hello...");
    }
}

如果发现任何条件都未返回期望值,则尝试检查代码是否已正确设置。如果您没有正确设置,则会在此处导致此问题。

出于测试目的,请尝试用任何简单的条件替换条件,或者尝试一个接一个地测试所有条件,以检查其是否有助于解决错误。如果能够解决问题,则需要修改条件来解决此问题。

如果问题仍然存在,则可以尝试将代码发布到分配这些行值的位置。我们将尝试对其进行测试。