お世話になります。
本日職場のイーサネットのホームページで「タブメニュー」を作る必要があったのでHP作成のサイトを参考に作ったのですが、職場のブラウザはedgeとIE11の両方を使用しておりどちらにも対応させる必要がありました。
参考にしたサイトのJavaScriptのコードがこちらになります。
JavaScript
1'use strict'; 2 3{ 4 const menuItems = document.querySelectorAll('.menu li a'); 5 const contents = document.querySelectorAll('.content'); 6 7 menuItems.forEach(clickedItem => { 8 clickedItem.addEventListener('click', e => { 9 e.preventDefault(); 10 11 menuItems.forEach(item => { 12 item.classList.remove('active'); 13 }); 14 clickedItem.classList.add('active'); 15 16 contents.forEach(content => { 17 content.classList.remove('active'); 18 }); 19 document.getElementById(clickedItem.dataset.id).classList.add('active'); 20 }); 21 }); 22}
edgeでは問題なく動きます。
しかしながらIE11のブラウザでは全く動かないため、よくよく詳しく調べるとIE11がforEachをサポートしていないことが分かりました。
「Can I use」でもしらべました。
じゃあbabelとやらにie11で使用できるコードに変換してもらおうと、初babelしてみました。
ところが、変換された結果が以下のようなコードになりました。
ie11対応のコードでもforEach使ってます。
JavaScript
1'use strict'; 2 3{ 4 var menuItems = document.querySelectorAll('.menu li a'); 5 var contents = document.querySelectorAll('.content'); 6 menuItems.forEach(function (clickedItem) { 7 clickedItem.addEventListener('click', function (e) { 8 e.preventDefault(); 9 menuItems.forEach(function (item) { 10 item.classList.remove('active'); 11 }); 12 clickedItem.classList.add('active'); 13 contents.forEach(function (content) { 14 content.classList.remove('active'); 15 }); 16 document.getElementById(clickedItem.dataset.id).classList.add('active'); 17 }); 18 }); 19}
明日、職場でこのコードを試してみますが、動く気が全くしません。
babelもIE11がforEachが使用できないことが分かっているだろうになぜこのようなコードを出してきたのでしょうか。
理由があれば教えていただきたいのと、もしかしたら私のbabelの使用方法が間違っているのかも思い質問させていただきました。
どなたか分かる方ご教授いただけませんでしょうか。
私がbabelを使用したときの画面はこちらです。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/07/04 11:55
2022/07/04 12:19 編集
2022/07/04 12:32
2022/07/04 13:03
2022/07/05 10:05