Javascript 错误:应使用Internet Explorer函数
我有一个不仅在IE中工作的代码。在其他浏览器上一切都很好,IE中出现的错误是Javascript 错误:应使用Internet Explorer函数,javascript,internet-explorer,Javascript,Internet Explorer,我有一个不仅在IE中工作的代码。在其他浏览器上一切都很好,IE中出现的错误是 Line: 11 Error: Function expected 这是小提琴,你可以随意复制粘贴,我真的不知道该怎么办。我不知道为什么它根本不起作用 代码: 函数循环(){ var mynumbers=[0,1,2,3,4,5,6,7,8,9,10]; var num=parseInt(document.formx.txtmipplier.value); 编写(“模拟循环”; 对于(变量i=0;i
Line: 11
Error: Function expected
这是小提琴,你可以随意复制粘贴,我真的不知道该怎么办。我不知道为什么它根本不起作用
代码:
函数循环(){
var mynumbers=[0,1,2,3,4,5,6,7,8,9,10];
var num=parseInt(document.formx.txtmipplier.value);
编写(“模拟循环
”;
对于(变量i=0;i”);
}
文件。写(“
”);
文件。写(“模拟做而
”;
var i=0;
做{
var prod=num*mynumbers[i];
document.write(mynumbers[i].toString()+“x”+num.toString()+“=”+(prod.toString()+“
”);
i++;
}而(i”);
编写(“模拟时
”;
var i=0;
而(i”);
i++;
}
}
我很确定问题出在文档。写。当您销毁文档时,Internet Explorer不会从文档中保留JavaScript(通过隐式调用document。通过调用document打开。在DOM就绪后编写),并且您在循环中调用的函数不再存在
使用createElement
/createTextNode
/appendChild
和friends,而不是文档。写不知道为什么,但循环
就像一个神奇的名字。根据演示,单击时循环不是一个函数。它是调用循环函数的
元素的属性。在onclick
中,该
指向元素本身,循环是元素的一个属性,等于1。这就是它出错的原因。可能的修复方法:将onclick=“loop()”
更改为onclick=“window.loop()”
例如,它在IE中开始工作,但document.write
销毁所有以前的DOM/JS,并在第一次document.write
执行后停止执行
如果您将在下面的演示中使用类似的内容,效果会更好(结果存储在临时变量中,该临时变量接下来将传递到res
div的innerHTML
):
函数loop1(){
var mynumbers=[0,1,2,3,4,5,6,7,8,9,10];
var num=parseInt(document.formx.txtmipplier.value);
var res=“模拟循环
”;
对于(变量i=0;i”;
}
res+=“
”;
res+=“模拟Do而
”;
var i=0;
做{
var prod=num*mynumbers[i];
res+=mynumbers[i].toString()+“x”+num.toString()+“=”+(prod.toString()+”
”;
i++;
}而(i”;
res+=“模拟时
”;
var i=0;
而(i”;
i++;
}
document.getElementById(“res”).innerHTML=res;
}
此外,由于某些原因,当函数名为loop
(在上面的代码和演示中称为loop1
)时,即使此代码在IE中也不起作用。使用上面的代码查看演示,但使用名为loop
:的函数,这在我的本地计算机上的ie9中有效。但由于某些原因,在JSFIDLE上失败。我得爱你
<form name="formx">
<input type="text" name="txtMultiplier">
<input type="button" id="test" value="LOOP!" >
</form>
<script>
document.getElementById('test').onclick = function(){
loop();
};
function loop(){
var mynumbers = [0,1,2,3,4,5,6,7,8,9,10];
var num = parseInt(document.formx.txtMultiplier.value);
document.write("Simulating For Loop<br>");
for(var i = 0; i < mynumbers.length; i++){
var prod = num * mynumbers[i];
document.write(mynumbers[i].toString() + " x " + num.toString() + "=" + (prod).toString() + "<br>");
}
document.write("<br>");
document.write("Simulating Do While<br>");
var i = 0;
do{
var prod = num * mynumbers[i];
document.write(mynumbers[i].toString() + " x " + num.toString() + "=" + (prod).toString() + "<br>");
i++;
}while(i < mynumbers.length);
document.write("<br>");
document.write("Simulating While<br>");
var i = 0;
while(i < mynumbers.length){
var prod = num * mynumbers[i];
document.write(mynumbers[i].toString() + " x " + num.toString() + "=" + (prod).toString() + "<br>");
i++;
}
}
</script>
document.getElementById('test')。onclick=function(){
loop();
};
函数循环(){
var mynumbers=[0,1,2,3,4,5,6,7,8,9,10];
var num=parseInt(document.formx.txtmipplier.value);
编写(“模拟循环
”;
对于(变量i=0;i”);
}
文件。写(“
”);
文件。写(“模拟做而
”;
var i=0;
做{
var prod=num*mynumbers[i];
document.write(mynumbers[i].toString()+“x”+num.toString()+“=”+(prod.toString()+“
”);
i++;
}而(i”);
编写(“模拟时
”;
var i=0;
而(i”);
i++;
}
}
不要将您的代码发布到可能不会像您的问题一样长久的地方。把代码贴在这里,让其他人受益。这件事让我愚蠢了将近两个小时!!!。。。循环词就是问题所在。IE JScript文档中是否存在“循环”一词?无论如何谢谢你
function loop1(){
var mynumbers = [0,1,2,3,4,5,6,7,8,9,10];
var num = parseInt(document.formx.txtMultiplier.value);
var res = "Simulating For Loop<br>";
for(var i = 0; i < mynumbers.length; i++){
var prod = num * mynumbers[i];
res += mynumbers[i].toString() + " x " + num.toString() + "=" + (prod).toString() + "<br>";
}
res += "<br>";
res += "Simulating Do While<br>";
var i = 0;
do{
var prod = num * mynumbers[i];
res += mynumbers[i].toString() + " x " + num.toString() + "=" + (prod).toString() + "<br>";
i++;
}while(i < mynumbers.length);
res += "<br>";
res += "Simulating While<br>";
var i = 0;
while(i < mynumbers.length){
var prod = num * mynumbers[i];
res += mynumbers[i].toString() + " x " + num.toString() + "=" + (prod).toString() + "<br>";
i++;
}
document.getElementById("res").innerHTML = res;
}
<form name="formx">
<input type="text" name="txtMultiplier">
<input type="button" id="test" value="LOOP!" >
</form>
<script>
document.getElementById('test').onclick = function(){
loop();
};
function loop(){
var mynumbers = [0,1,2,3,4,5,6,7,8,9,10];
var num = parseInt(document.formx.txtMultiplier.value);
document.write("Simulating For Loop<br>");
for(var i = 0; i < mynumbers.length; i++){
var prod = num * mynumbers[i];
document.write(mynumbers[i].toString() + " x " + num.toString() + "=" + (prod).toString() + "<br>");
}
document.write("<br>");
document.write("Simulating Do While<br>");
var i = 0;
do{
var prod = num * mynumbers[i];
document.write(mynumbers[i].toString() + " x " + num.toString() + "=" + (prod).toString() + "<br>");
i++;
}while(i < mynumbers.length);
document.write("<br>");
document.write("Simulating While<br>");
var i = 0;
while(i < mynumbers.length){
var prod = num * mynumbers[i];
document.write(mynumbers[i].toString() + " x " + num.toString() + "=" + (prod).toString() + "<br>");
i++;
}
}
</script>