Javascript 将参数按值传递给onClick函数
我不知道如何在JavaScript中将参数按值传递给onClick函数。我一直在尝试闭包函数,但它似乎不起作用!!啊Javascript 将参数按值传递给onClick函数,javascript,for-loop,onclick,pass-by-value,Javascript,For Loop,Onclick,Pass By Value,我不知道如何在JavaScript中将参数按值传递给onClick函数。我一直在尝试闭包函数,但它似乎不起作用!!啊 ... for(var i=0; i<=15; i++){ blockNr++; meal = getMealByCategory(category, i); place.innerHTML += "<div class='container-fluid' name='blockName' id='blockName" + block
...
for(var i=0; i<=15; i++){
blockNr++;
meal = getMealByCategory(category, i);
place.innerHTML += "<div class='container-fluid' name='blockName' id='blockName" +
blockNr + "' onClick='addPrice(meal, 20)'></div>"; //here, always the last meal is sent
var itemPlace = document.getElementById("blockName"+blockNr);
itemPlace.innerHTML = meal; //this works fine for all meals
}
。。。
对于(var i=0;i,这是因为在运行on click事件时,循环已完全执行,mean
的值作为最后计算的值是静态的。如果需要更改每个元素的值,则应将参数值传递给函数,而不是传递变量名。例如:
"' onClick='addPrice('" + meal + "', 20)'></div>";
“'onClick='addPrice('“+fine+”,20)>”;
这是因为当您运行点击事件时,循环已完全执行,MEIN
的值作为上次计算的值是静态的。如果需要更改每个元素的值,则应将参数值传递给函数,而不是传递变量名。例如:
"' onClick='addPrice('" + meal + "', 20)'></div>";
“'onClick='addPrice('“+fine+”,20)>”;
您要做的是创建一个全局变量,并在每次添加到.innerHTML
时覆盖它。字符串中的代码不能引用局部变量,因此无法实现您想要的
一个选项是将值连接到字符串中
place.innerHTML += "<div class='container-fluid' name='blockName' id='blockName" +
blockNr + "' onClick='addPrice(\"" + meal + "\", 20)'></div>";
您要做的是创建一个全局变量,并在每次添加到.innerHTML
时将其覆盖。字符串中的代码不能引用局部变量,因此无法实现所需的操作
一个选项是将值连接到字符串中
place.innerHTML += "<div class='container-fluid' name='blockName' id='blockName" +
blockNr + "' onClick='addPrice(\"" + meal + "\", 20)'></div>";
那么如何调用onclick
函数呢?使用dom操作而不是html注入。document.createElement(“div”)
…您的onclick绑定到循环末尾的fine变量,而不是每个迭代的fine值,这就是为什么总是显示最后一个fine。有很多示例说明如何在循环中分配事件处理程序来处理此问题。您是否考虑过使用jQuery?您可以稍微整理一下,然后添加一个click事件:$(“#blockName”)。在(“click”,addPrice(餐,20));那么如何调用onclick
函数?使用dom操作而不是html注入。document.createElement(“div”)
…您的onclick绑定到循环末尾的fine变量,而不是每个迭代的fine值,这就是为什么总是显示最后一个fine。有很多示例说明如何在循环中分配事件处理程序来处理此问题。您是否考虑过使用jQuery?您可以稍微整理一下,然后添加一个click事件:$()#“点击”,添加价格(餐,20));不确定什么是餐
,但这可能会导致XSSproblems@Bergi:可能吗?这太夸张了。但无论如何,我都表示会首选DOM创建。不确定什么是fine
,但这可能会导致XSSproblems@Bergi:可能吗?这太夸张了。但不管怎样,我表示DOM创建会首选。不确定什么是餐
,但这可能会导致XSSproblems@BergiMEIN
是在此之前几行声明的变量。是的,但它的值是什么?似乎是一些HTML。@Bergi谁知道呢。随便getMealByCategory()
返回。我不知道你怎么会认为这是HTML,因为没有证据证明这一点。我认为itemPlace.innerHTML=fine;//这适用于所有的膳食
足以证明:-)但是,是的,每当我们不知道它是什么的时候,我们就需要正确地逃避它。不确定什么是餐,但这可能会导致XSSproblems@BergiMEIN
是在此之前几行声明的变量。是的,但它的值是什么?似乎是一些HTML。@Bergi谁知道呢。随便getMealByCategory()
返回。我不知道你怎么会认为这是HTML,因为没有证据证明这一点。我认为itemPlace.innerHTML=fine;//这适用于所有的膳食
将是足够的证据:-)但是,是的,只要我们不知道它是什么,我们就需要正确地逃避它。