沒有特別需要使用jQuery這兩種。它可以在普通的JavaScript來完成,而不使用getElementsByTagName()
這樣的遞歸:
function set_inputs(obj, prefix) {
var nodes = obj.getElementsByTagName("input");
for (var i = 0, len = nodes.length; i < len; i++) {
if (nodes[i].id) {
nodes[i].id = prefix + '_' + nodes[i].id;
}
if (nodes[i].name) {
nodes[i].name = prefix + '_' + nodes[i].name;
}
}
}
附:我在代碼中添加了保護措施,以防您的代碼在沒有id或name屬性的情況下存在輸入標記,因此如果代碼遇到問題,則不會出錯。如果你不想這樣的保護,代碼會是這樣短:
function set_inputs(obj, prefix) {
var nodes = obj.getElementsByTagName("input");
for (var i = 0, len = nodes.length; i < len; i++) {
nodes[i].id = prefix + '_' + nodes[i].id;
nodes[i].name = prefix + '_' + nodes[i].name;
}
}
您可以通過它傳遞兩個參數,它表示你想要的DOM樹部分的頂部的DOM對象調用這個函數搜索input
標籤以及要添加到ID中的前綴。如果你這樣做:set_inputs(document.body, "test")
它會搜索整個文檔。如果你這樣做:set_inputs(document.getElementById("top"), "test")
,它只會搜索DOM樹的一部分(id = top元素下的部分)。您可以將它傳遞給任何任意的DOM對象,它只會搜索該層次中的節點。
你說過遍歷dom,你的'set_inputs'函數中有什麼'obj'? – gideon 2012-03-13 04:34:11
obj是一個DOM對象。該代碼通過再次調用該函數遞歸地抓取obj的childNodes並進行演練,這會抓取childNodes直到找到輸入標記。一旦找到,它會改變ID。 – garyM 2012-03-13 04:54:53
好吧只是想確保:) – gideon 2012-03-13 05:00:03