說我有這個樣機代碼:如何避免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
我會更新有關場景的更多信息。 –