IE11 Javascript: let [массив] для object.entries "SCRIPT1010: ожидаемый идентификатор" ошибка - PullRequest
2 голосов
/ 13 февраля 2020

В этом блоке кода я нахожу ошибку «SCRIPT1010: ожидаемый идентификатор» в первой строке IE11. Это прекрасно работает во всех других основных браузерах.

for (let [key, value] of Object.entries(CompanySettings)) {
 if (value == true) {    
   document.getElementById(key).removeAttribute("checked");
 }
 if (value == false) {
  document.getElementById(key).setAttribute("checked", "no");
 }
}

Я предполагаю, что это потому, что эта функция ES6 недоступна в IE, но мне интересно, есть ли старая старая JS В качестве альтернативы я мог бы использовать let.. of.., который работает в IE11. Я не очень заинтересован в добавлении дополнительной библиотеки только для запуска этого блока.

1 Ответ

2 голосов
/ 13 февраля 2020

Вы можете взять оператор for ... in и выполнить итерацию ключей.

for (var key in CompanySettings) {
    if (CompanySettings[key]) { // assuming true or false values
        document.getElementById(key).removeAttribute("checked");
    } else {
        document.getElementById(key).setAttribute("checked", "no");
    }
}

Возможно, вам понадобится еще одна проверка для несобственных свойств

for (var key in CompanySettings) {
    if (!CompanySettings.hasOwnProperty(key)) continue;
    if (CompanySettings[key]) { // assuming true or false values
        document.getElementById(key).removeAttribute("checked");
    } else {
        document.getElementById(key).setAttribute("checked", "no");
    }
}
...