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

如果JavaScript中的条件为true,如何编辑类中每个按钮的ID?,javascript,jquery,html,arrays,chart.js,Javascript,Jquery,Html,Arrays,Chart.js,我使用ChartJS生成一个饼图,每次用户单击一个特定按钮时,元素都会被添加(我有14个按钮触发在饼图中添加特定元素,每个按钮都会触发一个函数,根据需要将信息添加到3个数组中,以使图表正常工作) 每次用户单击按钮时,都会在包含图表中所有元素的div中创建一个新按钮,因为我希望他们能够根据需要编辑或删除元素 为了知道数组中的哪些元素是由哪个编辑按钮编辑的,我使用了一个名为btnctr的变量,该变量在JS文件的开头用0初始化。该变量给每个新的“编辑按钮”一个ID,然后递增,如下所示: functio

我使用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++;
        }
    }

}
//获取编辑按钮
var editbuttons=document.getElementsByClassName('editbtn');
//删除元素
函数deletelement(x){
名称.接头(x,1);
拼接(x,1);
颜色。拼接(x,1);
图表1.update();
时间=时间长度[x];
接头长度(x,1);
UpdateTime();
var delbtn=$(“#”+x);
$(delbtn.remove();
var newid=x;
对于(变量i=0;ix){
编辑按钮[i].id=newid;
newid++;
btnctr=newid++;
}
}
}

谢谢!

Lulian,在for循环中,看起来您只是在更改上面删除的editBTN的id。您可能需要尝试删除if语句并将“newid”替换为“i”:

(变量i=0;ix)的
{
编辑按钮[i].id=i;
//newid++;
btnctr=i;
// }
}

通过这种方式,您可以重新初始化所有editbtn和btnctr,以便从头到尾匹配。

不清楚如何将添加元素功能和删除元素功能绑定到按钮。如果操作正确,您根本不需要更改任何ID。看起来您是对的-谢谢!我使用了此功能打开了很长一段时间,这段代码是我以前尝试的遗留代码。我昨天尝试在没有a的情况下这样做,这就是为什么我尝试在删除按钮后只更改ID。这对我昨天来说是有意义的,但现在我知道我想得太多了。
for (var i=0; i<editbuttons.length;i++) {
   // if (editbuttons[i].id>x) {
        editbuttons[i].id=i;
        //newid++;
        btnctr=i;
   // }
}