Javascript在单击时传递变量
我正在学习JS并在函数之间传递变量。我试图在单击时执行函数,同时在函数之间传递变量。我可以通过在页面加载时执行函数来传递变量,但不能通过单击函数来传递Javascript在单击时传递变量,javascript,Javascript,我正在学习JS并在函数之间传递变量。我试图在单击时执行函数,同时在函数之间传递变量。我可以通过在页面加载时执行函数来传递变量,但不能通过单击函数来传递 function getData() { let xmlhttp = new XMLHttpRequest(); let url = "https://jsonplaceholder.typicode.com/posts"; xmlhttp.onreadystatechange = function() {
function getData() {
let xmlhttp = new XMLHttpRequest();
let url = "https://jsonplaceholder.typicode.com/posts";
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myArr = JSON.parse(this.responseText);
//myFunction(myArr);
document.getElementById("start2").addEventListener("click", myFunction(myArr));
}
};
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
getData();
function myFunction(arr) {
// var arr = getData();
var out = "";
var i;
for (i = 0; i < arr.length; i++) {
out += '<p>' + arr[i].id + '</p><br>';
}
document.getElementById("answer-holder").innerHTML = out;
}
函数getData(){
设xmlhttp=newxmlhttprequest();
让url=”https://jsonplaceholder.typicode.com/posts";
xmlhttp.onreadystatechange=函数(){
if(this.readyState==4&&this.status==200){
myArr=JSON.parse(this.responseText);
//myFunction(myArr);
document.getElementById(“start2”).addEventListener(“单击”,myFunction(myArr));
}
};
open(“GET”,url,true);
xmlhttp.send();
}
getData();
函数myFunction(arr){
//var arr=getData();
var out=“”;
var i;
对于(i=0;i'; } document.getElementById(“答案持有者”).innerHTML=out; }
它不起作用,因为
addEventListener
需要一个函数作为它的第二个参数。但您不提供函数。而是提供计算myFunction
的结果,这是未定义的(因为myFunction
不返回任何内容)
您可以通过提供一个函数来修复代码,该函数使用您选择的参数调用myFunction
document.getElementById("start2").addEventListener("click", function() {
myFunction(myArr);
});
问题是您在尝试设置onClick侦听器时调用了该函数:
document.getElementById("start2").addEventListener("click", myFunction(myArr));
正如Thomas所建议的,您必须向addEventListener传递一个函数。但是,我建议使用更新的lambda表示法:
document.getElementById("start2").addEventListener("click", () => myFunction(myArr));
这是很棒的回答,谢谢你的解释,因为这有助于我学习。Cheers@insomniac22没问题,很乐意帮忙!
document.getElementById("start2").addEventListener("click", () => myFunction(myArr));