Javascript 错误:应使用Internet Explorer函数

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

我有一个不仅在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”); } 文件。写(“
”); 文件。写(“模拟做而
”; 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>