繁体   English   中英

如果条件在JavaScript中为true,如何编辑类中每个按钮的ID?

[英]How to edit the ID of each button in a class if a condition is true in JavaScript?

我正在使用ChartJS生成饼图,因为每次用户单击特定按钮时都会添加元素(我有14个按钮触发在饼图中添加特定元素,每个按钮触发一个向信息添加信息的功能为了使图表正常工作,需要3个数组。

每次用户单击按钮时,都会在div中创建一个新按钮,其中包含图表中存在的所有元素,因为我希望它们能够根据需要进行编辑或删除。

为了知道数组中的哪些元素是由哪个编辑按钮编辑的,我使用了一个名为btnctr的变量,该变量在JS文件的开头用0初始化。 该变量为每个新的“编辑按钮”赋予一个ID,然后递增,如下所示:

function CreateEditButton() {
var buttonnode= document.createElement('input');
buttonnode.setAttribute('type','button');
buttonnode.setAttribute('id',btnctr);
...
$("#rotationelements").append(buttonnode);
$("#rotationelements").append(' ');
btnctr++;
 };

我的问题是我还必须使删除元素成为可能。 我正在使用splice从数组中删除元素,但这也弄乱了其他元素的位置,并且我的编辑按钮变得无用。

删除元素时,我还想编辑按钮的ID,因为我需要它们保持同步。

到目前为止,这是我自带的:

// Get editbuttons
var editbuttons = document.getElementsByClassName('editbtn');

// Delete element
function deleteElement (x) {
    names.splice(x,1);
    dataset.splice(x,1);
    colors.splice(x,1);
    chart1.update();
    time=time-length[x];
    length.splice(x,1);
    UpdateTime();
    var delbtn=$("#"+x);
    $(delbtn).remove();
    var newid=x;
    for (var i=0; i<editbuttons.length;i++) {
        if (editbuttons[i].id>x) {
            editbuttons[i].id=newid;
            newid++;
            btnctr=newid++;
        }
    }

}

谢谢!

卢莲,在您的for循环中,您似乎只是在更改了上面删除的editbtns的ID后才对其进行更改。 您可能要尝试取出if语句,并将“ newid”替换为“ i”:

for (var i=0; i<editbuttons.length;i++) {
   // if (editbuttons[i].id>x) {
        editbuttons[i].id=i;
        //newid++;
        btnctr=i;
   // }
}

这样,您可以重新初始化所有editbtn和btnctr以从头到尾匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM