0

所以我正在制作一个数据输入程序,用户按下按钮来生成新的输入(数字文本等),完成后列表通常在 100-10000 项之间。

该程序进展顺利,但现在我正处于输入一组数据必须为数组 [1,2, . . .] 这是后面一组数据的一部分。

所以我所做的是根据之前的输入设置带有 ID 的按钮。(整个数据集保存为 JSON)

我想要做的是当按钮被按下时它看起来被按下并将按钮的 ID 写入 HTML 元素,稍后将读取并保存到 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?

另一件事是给按钮一个按下的外观。

如果它是可逆的,则加分。

4

1 回答 1

0

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

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

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

于 2013-07-01T15:03:26.890 回答