脚本1004:预期为';'发生在“ For”循环IE浏览器中

时间:2019-03-06 14:27:39

标签: javascript internet-explorer

我在Internet Explorer的“ of”部分开始的两个“ For”循环中收到此错误SCRIPT1004: Expected ';'。有解决此问题的解决方法吗?

for(item of workstationData.coPathColumns) {
    var builtId = '#icat-' + item;
    if(!!$(builtId)[0].innerText) {
        $(builtId)[0].parentNode.hidden = false;
    }
}

2 个答案:

答案 0 :(得分:0)

如brk所述,IE不支持of,请查看here了解详情。

您可以使用forEach或简单的for循环。我之所以喜欢简单的for循环,是因为它不是基于callback的循环(异步),而forEach具有callback函数。

for(let i =0; i< workstationData.coPathColumns.length; i++) {
    item = workstationData.coPathColumns[i]; //assuming item is defined before, otherwise use let item = ...
    var builtId = '#icat-' + item;
    if(!!$(builtId)[0].innerText) {
        $(builtId)[0].parentNode.hidden = false;
    }
}

答案 1 :(得分:0)

Internet Explorer不支持for ... of循环。

如此处所示:MDN Documentation

此外,我建议您检查功能或功能集是否支持您必须支持的浏览器,在本例中为Internet Explorer,请选中caniuse.com

您的代码:

for(item of workstationData.coPathColumns) {
    var builtId = '#icat-' + item;
    if(!!$(builtId)[0].innerText) {
        $(builtId)[0].parentNode.hidden = false;
    }
}

可以转换成传统的for循环:

for(var i = 0; i < workstationData.coPathColumns; i++) {
    var builtId = '#icat-' + workstationData.coPathColumns[i];
    if(!!$(builtId)[0].innerText) {
        $(builtId)[0].parentNode.hidden = false;
    }
}

或者,如果您可以自动执行此“转码”过程,那真是太好了。因此,请仔细查看babel。将您的代码粘贴到babeljs.org

产生以下输出-应该等效于转换为for...of标准的es2015-loose循环:

"use strict";

for (var _iterator = workstationData.coPathColumns, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
  if (_isArray) {
    if (_i >= _iterator.length) break;
    item = _iterator[_i++];
  } else {
    _i = _iterator.next();
    if (_i.done) break;
    item = _i.value;
  }

  var builtId = '#icat-' + item;

  if (!!$(builtId)[0].innerText) {
    $(builtId)[0].parentNode.hidden = false;
  }
}