使用ajax的addeventlistener无法正常工作

3

我想在一个“div”中显示txt文件的内容,所以我通过按钮调用我的函数,但是即使我没有按下按钮,函数也会触发,以下是我的HTML代码:

<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个回答

2

addEventListener 的第二个参数应该是一个函数。你没有传递一个函数,而是立即调用了函数并传递了结果。请更改为:

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

这是关于编程的相关内容。我使用了一个二阶函数。请返回翻译后的文本,但不要进行解释。 - Rik
是的。你在addEventListener的参数中调用了changeStyle,而不是传递一个函数引用给addEventListener。这并不影响它是否是一个二阶函数。 - Barmar

1
你正在调用一个函数,而不是将其作为匿名方法传递。
window.onload=function(){
    document.getElementById("showF").addEventListener("click" , function(){
        sacardatos('P1.txt','container');
    },false);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接