2012-11-26 2 views
0

을 기대했다. 모든 다른 브라우저에서 잘 작동 IE에서 발생하는 오류이오류 : 기능 내가 IE에서뿐만 아니라 작업을 수행하는 코드가 인터넷 익스플로러

Line: 11 
Error: Function expected 

인이 바이올린은, 당신은 당신이, 내가 정말 뭘 모르는 원하는대로 붙여 복사 할 수 있습니다.

<form name="formx"> 
    <input type="text" name="txtMultiplier"> 
    <input type="button" value="LOOP!" onClick="loop()"> 
</form> 

<script> 
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> 
​ 
+0

귀하의 질문에 오래 머물지 않는 코드는 게시하지 마십시오. 다른 사람들에게 도움이되도록 여기에 코드를 게시하십시오. – RobG

답변

1

확실하지 왜,하지만 loop 솔기는 마법 이름처럼합니다. 클릭하면this 데모에 따르면, 루프는 함수가 아닙니다. 루프 기능을 호출하는 요소는 <input type="button"/>의 속성입니다. 요소 자체 루프 onclickthis 포인트는 에러 실패 이유 즉 동일한 1. 그것의 속성이다. 가능한 수정 : 변화 onclick="loop()"

예를 들어

, here가 IE에서 작업을 시작하지만, document.writeonclick="window.loop()"에 모든 previouse DOM/JS를 파괴하고 먼저 document.write 실행 후 실행을 중지합니다.

아래 데모에 같은 것을 사용하는 경우가 더 좋을 것이다는 (결과는 다음 innerHTML DIV res의에 전달되는 임시 변수에 저장됩니다) : http://jsfiddle.net/TDWd6/5/

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; 
} 

또한, 어떤 이유로, 함수 이름 (코드와 그 위의 데모 loop1라고합니다) loop 경우에도이 코드는 IE에서 작동하지 않습니다. 위와 같은 코드로 데모를 볼 수 있지만 함수는 loop입니다. http://jsfiddle.net/TDWd6/5/

+0

이게 내게 거의 2 시간 동안 어리 석 게 만들었다 !!! ... 루프 단어는 단지 문제였다. IE JScript 설명서에 "loop"라는 단어가 있습니까? 어쨌든 고마워요. –

+0

http://msdn.microsoft.com/ko-kr/library/ie/ms534134(v=vs.85).aspx –

1

나는 문제가 document.write입니다 확신 해요 : 나는 모든 http://jsfiddle.net/laupkram/TDWd6/

코드에서 작동하지 않는 이유를 모르겠어요. 당신이 (암시 적으로 DOM이 준비 후 document.write를 호출하여 document.open를 호출하여)을 파괴 할 때 Internet Explorer는 문서에서 자바 스크립트를 보존하지 않습니다, 당신은 루프에 호출 기능은 더 이상 존재하지 않습니다.

대신 createElement/createTextNode/appendChild 및 친구를 사용하십시오.

0

내 지역에서는 ie9에서 작동합니다. 그러나 어떤 이유로 jsfiddle에서 실패합니다. IE를 좋아해야 해.

<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>