所以我正在创建一个数据输入程序,用户按下按钮以生成新输入(数字文本等),完成后列表通常在100-10000个项目之间。
该程序进展顺利,但现在我处于一个输入的数据集必须为数组生成coices的点[1,2 ,. 。 。]这是后来的一组数据的一部分。
所以我所做的是基于早期输入的ID设置按钮。 (整个数据集保存为JSON)
我想要做的是当按下按钮时它看起来被按下并向HTML元素写入按钮的ID,稍后将读取该按钮并保存到JSON。
我的问题集中在将正确的信息反馈给用户。
function doStuff(container){
for (var u = 0, c = someJSON.length; u < c; u++){
var someButton = document.createElement('button');
someButton.id = someJSON.id;
someButton.className = 'someButton';
someButton.onclick = function() {
writeIDToHTML(container,someButton,someButton.id);
}
container.appendChild(someButton);
}
}
function writeIDToHTML(container,theButton,theID){
console.log("theID")
console.dir(theID)
}
这仅打印循环中的最后一个ID。如何获取每个按钮的每个ID?
另一件事是按下按钮。
奖励积分,如果它是可逆的。
答案 0 :(得分:0)
您不应在每个元素上添加侦听器。这样做的方法是在容器上添加一个监听器并获取被点击事件的id(通过event.target)。这称为事件委托。
我可以解释一下,但是这些人对你的问题做了完美的回答:http://davidwalsh.name/event-delegate
不过,你应该考虑使用像jquery这样的库来操作你的DOM。它实现了事件委派和高级跨浏览器DOM操作实用程序。例如,您不需要添加“容器”属性,因为您可以通过parent()
方法访问它。