使HTML元素访问动态生成的值

时间:2013-07-01 14:54:02

标签: html button dynamic this

所以我正在创建一个数据输入程序,用户按下按钮以生成新输入(数字文本等),完成后列表通常在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?

另一件事是按下按钮。

奖励积分,如果它是可逆的。

1 个答案:

答案 0 :(得分:0)

您不应在每个元素上添加侦听器。这样做的方法是在容器上添加一个监听器并获取被点击事件的id(通过event.target)。这称为事件委托。

我可以解释一下,但是这些人对你的问题做了完美的回答:http://davidwalsh.name/event-delegate

不过,你应该考虑使用像jquery这样的库来操作你的DOM。它实现了事件委派和高级跨浏览器DOM操作实用程序。例如,您不需要添加“容器”属性,因为您可以通过parent()方法访问它。