2014-01-09 115 views
0

我想在一個'div'中顯示一個txt文件的內容,所以我用一個按鈕調用我的函數,但是即使我不按下按鈕,函數也會觸發,這裏是我的HTML代碼:Addeventlistener with ajax不能正常工作

<body> 
<form> 
    <input id="showF" type="button" value= "Show File" /> 
</form> 

<div id="contaniner" style="background-color:#99FF66;"> 
<p>It will show the txt content</p> 
</div> 

</body> 

我的js代碼:

window.onload=function(){ 
    document.getElementById("showF").addEventListener("click",sacardatos('P1.txt','container'),false); 
} 

function sacardatos(data, idDiv){ 
    var XMLHttpRequestObject = false; 
if (window.XMLHttpRequest) { 
    XMLHttpRequestObject = new XMLHttpRequest(); 
} else if (window.ActiveXObject) { 
    XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP"); 
} 

    if(XMLHttpRequestObject) { 
     var objeto = document.getElementById(idDiv); 
     XMLHttpRequestObject.open("GET", data); 
     XMLHttpRequestObject.onreadystatechange = function(){ 
      if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) { 
       objeto.innerHTML = XMLHttpRequestObject.responseText; 
     } 
    } 
    XMLHttpRequestObject.send(null); 
} 
} 

回答

2

addEventListener的第二個參數應該是一個函數。你沒有傳遞函數,你立即調用函數並傳遞結果。更改爲:

document.getElementById("showF").addEventListener("click", function() { 
    sacardatos('P1.txt','container'); 
}, false); 
+0

非常感謝!解決了! :d – Doruko

1

要調用一個函數,而不是在傳遞一個匿名方法。

window.onload=function(){ 
    document.getElementById("showF").addEventListener("click" , function(){ 
     sacardatos('P1.txt','container'); 
    },false); 
}