Не запускается простой код в эксплорере 10
Подскажите пожалуйста. Попытался реализовать поле комбинации
Во всех браузерах запустился (firefox, opera, chrom, yandex) а в internet explorer не хочет. При этом консоль не выдает никаких ошибок. вот код:
index.html:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>Проба перебора всех символов</title>
<link rel="stylesheet" href="style.css">
<script src="jquery-3.5.1.min.js"></script>
<script src="app.js"></script>
</head>
<body>
<div id="combinations">
<div id="combheader">
<div id="combheadercaption">Комбинации</div>
</div>
<div id="combfield">
<textarea id="textarea" rows="1" cols="12">Введите слово</textarea>
</div>
<div id="combnav">
<button id="combgo">Получить</button>
<button id="combclear">Очистить</button>
</div>
</div>
</body>
</html>
app.js:
function permut8(arr, prepend) { // функция для получения всех комбинаций букв слова
var i, version, el, result = [];
prepend = prepend || [];
if(arr.length === 1) return [arr];
for( i=0; i<arr.length; i++) {
if( arr.length === 2) {
result.push( prepend.concat( [arr[i], arr[(i+1)%2]] ));
} else {
version = arr.slice();
el = version.splice(i,1);
result = result.concat( permut8( version, prepend.concat(el)));
}
}
return result;
}
$(document).ready(function () {
$('#combgo').on('click', function () {
var znach = document.getElementById('textarea').value;
if (znach.length >9) {
document.getElementById('combfield').innerHTML = '<span>Количество комбинаций получится более трех миллионов!!! \
Устройство может зависнуть. Попробуйте угадать слово на слух из проигрывателя.</span>';
}
else {
var test = permut8( znach.split('') );
let stroka = test.map( e=>e.join(' ')), newstroka='';
for (let i = 0; i<stroka.length; i++) {
newstroka = newstroka + stroka[i] + '<br>';
}
document.getElementById('combfield').innerHTML = newstroka;
}
});
$('#combclear').on('click', function () {
document.getElementById('combfield').innerHTML = '<textarea id="textarea" rows="1" cols="12">Введите слово</textarea>';
});
});
Ответы (1 шт):
Автор решения: artomich
→ Ссылка
...
let stroka = test.map( e=>e.join(' ')), newstroka='';
...
У вас здесь использована стрелочная функция и директива let. В ie любых версий не работает первое (следует заменить на function(e) {return e.join(' ')}), второе же работает только в ie11 (здесь придется использовать var).
PS: и еще, могу посоветовать использовать весь функционал jq, в котором, например, вместо document.getElementById предусмотрен $('#<some id>'), а вместо innerHTML - <some element>.html(<some html>). Ну, или не подключать jq вовсе...