2014-02-27 33 views
0

在我的研究中,我們嘗試使用JavaScript動態地將行添加到HTML表格中,每個id標記根據行號遞增很重要。我發現了各種建議的方式來做到這一點。最後,我想我會嘗試編寫一個遞歸函數來完成這個技巧。以下作品。但我不知道它是否可以優化。請讓我知道我能做些什麼來改善它。遞歸函數是一種動態添加表格行的有效方法嗎?

function incrementElementID(element, incrementVal) { 

if(element.hasAttribute("id")) { 
    idVal = element.getAttribute("id"); 
    element.setAttribute("id",idVal+incrementVal); 
} 

var numChildren = element.childElementCount; 
for (var i=0; i<numChildren; i++) 
    incrementElementID(element.children[i],incrementVal); 

return; 

} 
+1

爲什麼不使用'tr's ['rowIndex'](https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.rowIndex)屬性來創建一個id,不需要一個外部功能。 – Teemu

回答

0

如果您不是故意嘗試使用遞歸,最好使用閉包變量。

在函數範圍外設置一個變量並在函數內增加它。

0

你一些簡單的jQuery更好:

var incrementVal = ... 
$("[id]").each(function(index, value) { 
    elem = $(value); 
    elem.attr("id", +elem.attr("id") + incrementVal); 
}); 

$("[id]")選擇具有一個id屬性的元素:http://api.jquery.com/has-attribute-selector/

.each遍歷集合中的所有項目:https://api.jquery.com/jQuery.each/

+elem.attr("id")前面的+將字符串的屬性值轉換爲int。