我试图通过获取一个获取当前页面名称的脚本(通过$ _SERVER [“PHP_SELF”])来浏览导航菜单,然后在JavaScript中找到相关名称(即从/contact.php找到联系人) )并搜索具有该id的元素(我的列表项具有与其目标匹配的ID)。现在我想将元素的id换成“cur”,这会赋予它相关的样式,使当前页面的标签显示不同。但是我遇到了问题,尽管使用适当的语法tryin replaceNode和replaceChild。这是一个longwinded形式的脚本:
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行之后中断。有人有什么想法吗?
答案 0 :(得分:1)
您想要使用以下内容:
var newNode = oldNode.cloneNode(true);
newNode.id = "cur";
oldNode.parentNode.replaceChild(newNode, oldNode);
答案 1 :(得分:0)
oldNode.id = "cur";
应该做你需要的一切。如果你想严格要求,你可以使用
oldNode.setAttribute("id", "cur");
答案 2 :(得分:0)
Okie dokies,我明白了:而不是insertBefore,我现在有了appendChild而且有效。无论如何,为了更好地使用DOM,我会玩你的建议。