Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.09.2018, 12:18
Интересующийся
Отправить личное сообщение для JIeuTo Посмотреть профиль Найти все сообщения от JIeuTo
 
Регистрация: 14.09.2018
Сообщений: 18

Скрипт не работает на IE
Здравствуйте, у меня вопрос, есть вот такой скрипт
window.addEventListener('load',()=> {
allClass(0.4);  // время transition
function allClass(transition){
    let question = document.querySelectorAll('.question'),
    answer = document.querySelectorAll('.answer'),
    arrayHeight = [];
    const props = el => el.getBoundingClientRect();
    [...question].forEach((e,i) => {
        arrayHeight[i] = props(answer[i]).bottom - props(answer[i]).top + 10 + 'px';
        answer[i].style.height = '0px';
        setTimeout(()=> answer[i].style.transition = transition + 's', 50);
        e.addEventListener('click',() => {
            [...answer].forEach((e,i) => { answer[i].style.height = '0px'; });
            props(answer[i]).height == 0 ? answer[i].style.height = arrayHeight[i] : '';
        });
    });
}
},false);

Он не работает на IE, то есть сайт с этим скриптом вообще не загружается, грузит и грузит, хотя на chrome полет отличный, не подскажите где загвоздка?
Ответить с цитированием
  #2 (permalink)  
Старый 14.09.2018, 12:47
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

У вас используется синтаксис версии ES6: let, const, ..., =>. Последний IE (11) поддерживает данный стандарт только на 11%, по таблице получается что только let и const в данном случае. А например новое поколение IE называемое Edge как мы видим уже на 96% поддержка. Для более широкой поддержки вам надо переписать код в более старый формат ES5, инструмент, который автоматически делает это, называется транспайлер.

Последний раз редактировалось Rise, 14.09.2018 в 12:52.
Ответить с цитированием
  #3 (permalink)  
Старый 14.09.2018, 12:58
Интересующийся
Отправить личное сообщение для JIeuTo Посмотреть профиль Найти все сообщения от JIeuTo
 
Регистрация: 14.09.2018
Сообщений: 18

Rise,
а не подскажите? http://babeljs.io/ прекратил свое существование? так как сайт не открывается у них
Ответить с цитированием
  #4 (permalink)  
Старый 14.09.2018, 13:13
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от JIeuTo
прекратил свое существование?
Нет, просто забанен государством, как и whatwg.org например.
Ответить с цитированием
  #5 (permalink)  
Старый 14.09.2018, 13:42
Интересующийся
Отправить личное сообщение для JIeuTo Посмотреть профиль Найти все сообщения от JIeuTo
 
Регистрация: 14.09.2018
Сообщений: 18

Rise,
я переделал свой код в ES5 с помощью babel, но теперь страница грузиться, а скрипт не выполняется, я слышал что IE не дружит с foreach?
Ответить с цитированием
  #6 (permalink)  
Старый 14.09.2018, 13:46
Интересующийся
Отправить личное сообщение для JIeuTo Посмотреть профиль Найти все сообщения от JIeuTo
 
Регистрация: 14.09.2018
Сообщений: 18

Rise,
решил проблему обернув в [].slice.call(), спасибо за помощь, помогли очень
Ответить с цитированием
  #7 (permalink)  
Старый 14.09.2018, 14:36
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

JIeuTo,
Еще можно и такой вариант, с forEach:
var answer = document.querySelectorAll('.answer');
[].forEach.call(answer, function(item) { item.style.height = '0px'; });
Ответить с цитированием
  #8 (permalink)  
Старый 14.09.2018, 14:48
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

NodeList.prototype.forEach = Array.prototype.forEach; 
//...
answer.forEach(function(e,i){
//...
question.forEach(function(e,i){
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт не работает в Opera в интернете, но работает на локальном ПК lsti Opera, Safari и др. 4 29.12.2013 07:48
Не работает скрипт калькулятора в FF 4.0 YaVolodya Firefox/Mozilla 2 01.11.2013 11:04
В Firefox не работает скрипт в отличии от Opera, Chrome, IE yanagas Javascript под браузер 2 06.08.2013 01:32
Не работает скрипт :( VladimirV Javascript под браузер 5 21.12.2010 14:26
скрипт работает только в IE, а в остальных браузерах нет. melodicman Firefox/Mozilla 0 23.06.2010 15:18