2014-01-09 118 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); 
}