说我有这个样机代码:如何避免ID-冲突时,对即时产生元件
button.click(function(){generateForm();}
function generateForm(){
div.append(<input type='text' id='x'>);
}
我需要的ID,以分别访问的元素。
避免在这种情况下发生ID冲突的最佳方法是什么?
说我有这个样机代码:如何避免ID-冲突时,对即时产生元件
button.click(function(){generateForm();}
function generateForm(){
div.append(<input type='text' id='x'>);
}
我需要的ID,以分别访问的元素。
避免在这种情况下发生ID冲突的最佳方法是什么?
它更好地使用class
来代替。但是,如果你仍然愿意使用id
,您可以考虑使用一个计数器是这样的:
var idCounter = 1;
function generateForm(){
div.append("<input type='text' id='x-" + (idCounter++) + "'>");
}
感谢您的回复。你能否详细说明在这种情况下如何使用类? –
你的问题仍然不清楚。你能告诉我你想对这些文本字段做什么吗? –
如果你确实需要,你可以使用当前的时间戳的ID。
这显然不会产生重复的ID,除非您每毫秒多次调用该函数或者您的用户经常在时间间隔中卡住。
function generateForm(){
d = new Date();
div.append('<input type="text" id="unique-id-' + d.getTime() + '" >);
}
编辑:注意unique-id-
前缀,ID应该只能是数字。
如果您不希望跟踪外部计数器,请尝试:
function makeAVeryRandomId() {
var d = new Date(),
a = ["0","1","2","3","4","5","6","7","8","9"],
i = 10,
m = '';
while (i--) {
m += a[Math.floor(Math.random() * a.length)];
};
return d.getTime() + m;
};
记住,ID
,不可以以数字开头,所以用一个字母前缀的随机数(或两个)。
根本不使用ID? – vzwick
这取决于你在做什么。在服务器端生成标识可能是最有意义的。 – Marcin
我会更新有关场景的更多信息。 –