2013-08-24 68 views
4

希望你能幫助我解決這個問題...我的代碼:使用的document.getElementById與部分ID名稱

function showIt() { 
    document.getElementById("gatewayContainerstacks_in_9_page4").style.visibility = "hidden"; 
} 
setTimeout("showIt()", 2500); // after 2.5 sec 

我想2.5秒後隱藏一個div。它工作正常,但問題是,我想要的目標是動態的。只有第一個字永遠是相同的(gatewayContainerstacks)。之後,該ID是動態的(_in_9_page4部分)。有沒有一種方法可以讓代碼從gatewayContainerstacks開始搜索div?我將不勝感激一個提示..謝謝...

回答

5

使用document.querySelector()

function showIt() { 
    document.querySelector('[id^="gatewayContainerstacks"]').style.visibility = "hidden"; 
} 
setTimeout("showIt()", 2500); // after 2.5 sec 

BTW,請不要把showIt()引號,更好的參考函數本身:

setTimeout(showIt, 2500); 
+0

謝謝!我會放手一搏! – Gerard

+0

它完美的工作!再次感謝。你救了我幾個小時! – Gerard

+0

@Gerard不客氣!請接受答案,以便讓其他用戶知道您已找到解決方案;) – ComFreek

2

好,首先,你永遠不要傳遞一個字符串到setTimeout。在這種情況下,您只需傳遞showIt(無括號!),它就可以正常工作。

至於你的實際問題,你可以嘗試這樣的事:

document.querySelector("[id^=gatewayContainerstacks]").style.visibility = "hidden"; 

但是請記住,這將在Internet Explorer 8之前的版本不工作,可能無法在一些較老的移動瀏覽器工作,要麼。

對於一個更通用的解決方案,我建議給人一種獨特的和已知的ID,然後把其他的信息到data-*屬性:

<div id="gatewayContainerstacks" data-in="9" data-page="4">...</div> 

或者類似的東西。

+0

感謝您的建議! – Gerard

相關問題