javascript - 如何使这个 JavaScript 函数也与 Internet Explorer 兼容
问题描述
我不是 JS 方面的专家。我让这个功能工作得很好,但它在 IE 中不起作用。我认为这是因为使用 'let' 的循环函数,然后在查询当前循环项的索引的函数中......我知道这在旧浏览器中可能不支持。
但是,如果没有那部分,我不知道如何达到相同的结果......我发现了这个
var g = document.getElementById('my_div');
for (var i = 0, len = g.children.length; i < len; i++)
{
(function(index){
g.children[i].onclick = function(){
alert(index) ;
}
})(i);
}
但不确定如何使用它。谢谢您的帮助!
我的功能:
window.onload = function(){
const openers = document.querySelectorAll('.openerbuttons');
const fullsections = document.querySelectorAll('.fullsection');
for(let i = 0; i < openers.length; i++){
openers[i].addEventListener('click',function(){
if(!fullsections[i].classList.contains('inview')){
openers.forEach(function(opener) {
opener.classList.remove('opened');
});
fullsections.forEach(function(fullsectionjs) {
fullsectionjs.classList.remove('inview');
});
openers[i].classList.add('opened');
fullsections[i].classList.add('inview');
} else{
openers[i].classList.remove('opened');
fullsections[i].classList.remove('inview');
}
});
}
}
解决方案
感谢评论中的建议,以及直接在 IE 11 中进行故障排除(甚至不知道它有控制台),我得到了这个代码。forEach 方法也不支持,所以我也改变了它。
请注意,在 IE 11 中对 classList 有所支持,甚至 classList.contains 也有效。
'use strict';
window.onload = function () {
var openers = document.querySelectorAll('.openerbuttons');
var fullsections = document.querySelectorAll('.fullsection');
var _loop = function _loop(i) {
openers[i].addEventListener('click', function () {
if (!fullsections[i].classList.contains('inview')) {
for (var j = 0, len = openers.length; j < len; j++) {
openers[j].classList.remove('opened');
fullsections[j].classList.remove('inview');
}
openers[i].classList.add('opened');
fullsections[i].classList.add('inview');
} else {
openers[i].classList.remove('opened');
fullsections[i].classList.remove('inview');
}
});
};
for (var i = 0; i < openers.length; i++) {
_loop(i);
}
};
推荐阅读
- html - 将特定选项卡的内容显示为其子项
- uwp - ContextFlyout 和 SwipeControl 冲突
- python - 为什么程序在返回相同的答案时不接受我的代码?
- windows - 构建批处理程序来监控、创建和删除电池日志
- mysql - 将 REPLACE 与 CHAR(160) 一起使用将返回十六进制值
- visual-studio - Visual Studio 2017 使用 #else 指令丢失了智能感知和着色
- c++ - n皇后问题的程序仅适用于n<=10,即使它应该适用于所有n
- c++ - c ++对对象的排序向量,编译错误要求运算符“=”
- javascript - 如何从 ASP.NET MVC 中的另一个视图修改 share layout.cshtml 中的 image.OnClick?
- python - 如何使用python使用列作为索引将多个csv文件连接成一个csv文件