【发布时间】:2021-07-11 00:21:12
【问题描述】:
我有一些 javascript 创建一些带有点击事件的按钮到传递该按钮标识符的函数。标识符是创建它们的代码中的一个变量。但是,变量是通过引用传递的,因此函数获取的值是变量的最后设置值,而不是创建按钮时的值。
这似乎是一个非常简单且常见的飞行员错误,但我无法在此处或更广泛的网络上找到任何答案。
在下面的示例中,我希望 Buttonclicked 函数中的 ClickedID 是创建按钮时 CreateButtons 函数中 ButtonID 的值(并显示在按钮的标题中),而不是函数时的 ButtonID完成。
function CreateButtons() {
var Buttons = document.getElementById("Buttons");
var Button = null;
var ButtonID = 0;
for (ButtonID = 0; ButtonID < 6; ButtonID++) {
Button = document.createElement("button");
Button.appendChild(document.createTextNode("Button " + ButtonID));
Button.onclick = function() {ButtonClicked(ButtonID);};
Buttons.appendChild(Button); }
}
function ButtonClicked (ClickedID) {
alert("You clicked button " + ClickedID);
}
button {
display: block;
width: 150px;
margin-bottom: 10px;
<button onclick="CreateButtons();">Create Buttons</button>
<div id="Buttons"></div>
【问题讨论】:
标签: javascript variables events arguments