2012-10-10 44 views
1

我目前的init()代碼以'desc_1','desc_2','desc_3'等爲起點的元素ID。函數目標ID的範圍

function init(){ 
    var max = 50000; 
    for (i = 1; i < max; i++){ 
     makeEditable('desc_'+i);} 
} 

大多數頁面上的元素纔會真正開始於1。例如,他們可能是「desc_47」,「desc_48」,「desc_49」 - 或在某些情況下,甚至不連續的:'desc_96','desc_99','desc_101'。

我的init()語句必須定位這些類型的元素ID? 在此先感謝!

+0

你有沒有考慮使用一個類名稱呢? –

回答

1

不是猜測50000個ID,而是選擇所有具有以desc_開頭的ID的元素,然後將該元素傳遞給makeEditable()

var els = document.querySelectorAll("*[id^=desc_]"); 

for (var i = 0; i < els.length; i++) { 
    makeEditable(els[i]); 
} 

如果他們都是相同的元素類型,在與標籤名稱選擇替換*

如果還有其他以該ID開頭的元素,則將一個類分配給這些元素,以便您可以直接定位它們。

如果你不能添加一個類,那麼在傳遞它之前,你只需要測試每個元素的id以確保它在最後有一個數字。

+0

啊是的!感謝你!您的選中標記正在運行 – dsol828

+0

不客氣。 –

0

如果您正在尋找舊的瀏覽器支持它可以以下面的方式(也許有點亂)來完成:

var divs = document.getElementsByTagName('div'), 
     len = divs.length, 
     myArray = []; 

    for (var i = 0;i<len;i++) { 
     if (divs[i].id.substring(0,4) == "desc") { 
      makeEditable(divs[i]); 
     } 
    }