我正在循环一个对象数组,并且遇到奇怪的行为。这里是我的代码:为什么数组的最后一个元素只能在Javascript中使用onClick
window.onload = function() {
document.getElementById('btnAdd').onclick = function() {
add("button");
};
function add(type) {
var names = {};
names['one'] = { id: "Button 1",msg:"#1" };
names['two'] = { id: "Button 2", msg: "#2" };
names['three'] = { id: "Button 3", msg: "#3" };
//Create an input type dynamically.
function addOnClick(element, currentName) {
element.onClick = function() {
alert("button is " + names[currentName].msg);
};
};
for (name in names) {
var element = document.createElement("input");
element.type = type;
element.value = names[name].id;
element.name = name;
addOnClick(element,name);
var foo = document.getElementById("fooBar");
//Append the element in page (in span).
foo.appendChild(element);
}
}
};
继承人的HTML:
<p>
<input type="button" id="btnAdd" value="Add Buttons" />
<p id="fooBar">Buttons: </p>
</p>
如果您在浏览器中运行它,并“添加按钮”按钮,3个按钮创建并适当命名。但是,如果你点击3个新按钮中的一个,警告框总是说“按钮是#3”,我不知道为什么。有人可以解释为什么onClick事件只记住我的数组中的最后一项?谢谢
为什么不让你的名字对象数组? – 2013-03-12 17:32:49
我试过了,但我得到了同样的结果,所以我省略了它。 – BoundForGlory 2013-03-12 17:34:04
它'element.onclick'不''element.onClick' – mrk 2013-03-12 18:01:50