2009-08-13 78 views
0

我想通過獲取當前頁面名稱的腳本(通過$ _SERVER [「PHP_SELF」]),然後在JavaScript中找到相關的名稱(即從/contact.php找到聯繫人)並搜索具有該ID的元素(我的列表項具有與其目標相匹配的ID)。現在我想交換元素的id爲「cur」,這會賦予它相關的樣式,使當前頁面的標籤顯示不同。但是我遇到了問題,儘管嘗試replaceNode和replaceChild使用適當的語法。下面是它的冗長的表單中的腳本:通過替換節點更改節點id

function setCurPage() { 

    var CurPage = "<?php echo $_SERVER["PHP_SELF"]; ?>"; // equates to "/contact.php" 
    var CurRaw = CurPage.substr(1); 
    var Cur = CurRaw.split(".")[0]; 
    var oldNode = document.getElementById(Cur); 

var newNode = document.createElement("li"); 
newNode.id = "cur"; 
var innards = document.getElementById(Cur).children; 
while(innards.length > 0) { 
newNode.insertBefore(innards[0]); 
} 
oldNode.parentNode.replaceChild(newNode, oldNode); 
} 

我已經試過各種警報,我知道節點創建行是正確的,但的replaceChild行之後的任何警報打破。有人有主意嗎?

回答

1

你想使用類似以下內容:

var newNode = oldNode.cloneNode(true); 
newNode.id = "cur"; 
oldNode.parentNode.replaceChild(newNode, oldNode); 
0
oldNode.id = "cur"; 

應該做所有你需要的。如果你想成爲嚴格的話,你可以使用

oldNode.setAttribute("id", "cur"); 
0

Okie dokies,我知道了:不是的insertBefore,我現在的appendChild這是有效的。無論如何,我會隨時提出您的建議,以便更好地使用DOM。