【问题标题】:Only update added javascript elements on second click仅在第二次点击时更新添加的 javascript 元素
【发布时间】:2016-07-31 15:02:25
【问题描述】:

我有一些 Javascript 代码从数组中获取值,该数组处理来自服务器的 http 响应并将按钮添加到模式窗口。所以按钮的 id 来自数组。 第二次点击一切都很好,我的按钮被添加到模式窗口中。但是当我下次调用该函数时,它会再次添加按钮,但它应该只更新按钮。 我该如何处理该功能只会在第二次和进一步点击时更新按钮?

buttonContainer = document.getElementById('modal1');                
        for (i = 0; i < resultContainers.length; i++) {
            newButton = document.createElement('input');
            newButton.type = 'button';
            newButton.value = resultContainers[i];
            newButton.id = resultContainerValues[i];
            newButton.class = 'buttonContainer';
                if (newButton.id == 'true') {
                    newButton.style.backgroundColor = '#8cff1a';
                };
            newButton.onclick = function () {
                alert('You pressed '+this.id);
            };
            buttonContainer.appendChild(newButton);

【问题讨论】:

    标签: javascript html button click


    【解决方案1】:

    在这种情况下,您需要在添加按钮之前检查按钮是否已经存在。由于您知道要创建的按钮的 id,因此您可以查看是否已经存在具有该 id 的按钮并直接更新它。

    var newButton = document.getElementById(resultContainerValues[i]);
    if(newButton!=null) {
        newButton.value = resultContainers[i];
    } else {
        newButton = document.createElement('input');
        newButton.type = 'button';
        newButton.value = resultContainers[i];
        newButton.id = resultContainerValues[i];
        newButton.class = 'buttonContainer';
        if (newButton.id == 'true') {
            newButton.style.backgroundColor = '#8cff1a';
        }
        newButton.onclick = function () {
            alert('You pressed '+this.id);
        };
        buttonContainer.appendChild(newButton);
    }
    

    【讨论】:

    • 感谢您的帮助,但是当我第二次加载该功能时,按钮将再次添加。我想要的是,不是所有的按钮都会第二次添加,但应该更新按钮,每个按钮只存在一次。有没有可能以一种简单的方式做到这一点? @kamoroso94
    • 我想我可能对你的问题的一些细节有些模糊。我制作了一个 JSFiddle 示例,显示了我希望您正在寻找的内容。如果没有,也许您可​​以使用更多详细信息更新您的问题? jsfiddle.net/x5k57o01
    • 这真的不能告诉我更多关于你遇到的问题。您提到按钮不断重复。您何时调用此代码以及从何处获取 resultContainersresultContainerValues 变量的值?
    • 对不起,我的问题必须更详细。我有一个模式,它有几个按钮,有不同的选项可以在单击它们时调用不同的功能。例如。如果我单击模式“获取状态”中的按钮,它会调用上述代码所在的相应函数。然后,此函数将数组中的按钮放置在表示数组不同键的模态中。我遇到的问题是,当我再次单击“获取状态”按钮(模式)时,不应另外创建由该函数创建的按钮,而应仅更新。
    • 只要按钮的ids 保持不变,您就可以按照我的示例进行操作并检查按钮是否已经存在。如果是这样,只需更新它。否则,创建它并将其附加到buttonContainer。我很好奇为什么ids 之一是"true""true"id 按钮是否应该更改?只是把它扔在那里,但你知道ids 应该是独一无二的,对吧?其他ids 是唯一的,还是它们都具有"false" 的值?
    猜你喜欢
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多