我目前在调用 getElementByID
的脚本时遇到问题在 Internet Explorer 11(可能还有旧版本)中。它在 Edge、Chrome、FF 等中工作正常。但在 IE 中,div 不会出现,并且在控制台中出现错误:
SCRIPT5007: Unable to set property 'visibility' of undefined or null reference
本质上,有四个隐藏的 div,脚本依次显示每个隐藏的 div,它们之间有几秒钟的间隙。
该函数由body标签调用:
<body onload="displayBlocks()">
div 的 Html 是:
一些文字
<div id="text_box_2" class="tb">
Some Text
</div>
<div id="text_box_3" class="tb">
Some Text
</div>
<div id="text_box_4" class="tb">
Some Text
</div>
脚本是:
i = 0;
function displayBlocks() {
if (i < 4) {
alert
setTimeout(function() {
showBlock(i);
}, 3000);
}
}
function showBlock(blockN) {
if (blockN == 0) {
item = document.getElementById("text_box_1");
item.style.visibility = "visible";
}
if (blockN == 1) {
item = document.getElementById("text_box_2");
item.style.visibility = "visible";
}
if (blockN == 2) {
item = document.getElementById("text_box_3");
item.style.visibility = "visible";
}
if (blockN == 3) {
item = document.getElementById("text_box_4");
item.style.visibility = "visible";
}
i++;
displayBlocks();
}
}
任何关于为什么会发生这种情况的想法将不胜感激。
最佳答案
您需要更改项目变量的名称 - 它是 IE 的保留变量
var i = 0;
function displayBlocks() {
if (i < 4) {
setTimeout(function() {
showBlock(i);
}, 3000);
}
}
function showBlock(blockN) {
if (blockN == 0) {
console.log(item);
var item1 = document.getElementById("text_box_1");
item1.style.visibility = "visible";
}
if (blockN == 1) {
var item1 = document.getElementById("text_box_2");
item1.style.visibility = "visible";
}
if (blockN == 2) {
var item1 = document.getElementById("text_box_3");
item1.style.visibility = "visible";
}
if (blockN == 3) {
var item1 = document.getElementById("text_box_4");
item1.style.visibility = "visible";
}
i++;
displayBlocks();
}
displayBlocks();
.tb {
visibility: hidden;
}
<div id="text_box_1" class="tb">
Some Text 1
</div>
<div id="text_box_2" class="tb">
Some Text 2
</div>
<div id="text_box_3" class="tb">
Some Text 3
</div>
<div id="text_box_4" class="tb">
Some Text 4
</div>
如果运行上面的代码片段,您会发现它在除 IE 之外的所有浏览器中崩溃,原因是 console.log(item)
正如@JLRishe指出的,如果你将它声明为var,你可以将你的项目设置为本地的if
- 你似乎没有声明任何变量(你应该开始,否则它们是所有全局性的,你会遇到更多此类问题)
关于javascript - getElementByID 在 IE 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47392049/