如果JavaScript中的条件为true,如何编辑类中每个按钮的ID?
我使用ChartJS生成一个饼图,每次用户单击一个特定按钮时,元素都会被添加(我有14个按钮触发在饼图中添加特定元素,每个按钮都会触发一个函数,根据需要将信息添加到3个数组中,以使图表正常工作) 每次用户单击按钮时,都会在包含图表中所有元素的div中创建一个新按钮,因为我希望他们能够根据需要编辑或删除元素 为了知道数组中的哪些元素是由哪个编辑按钮编辑的,我使用了一个名为btnctr的变量,该变量在JS文件的开头用0初始化。该变量给每个新的“编辑按钮”一个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
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;
// }
}