2009-08-13 4 views
0

現在のページ名を($ _SERVER ["PHP_SELF"]経由で)取り出し、JavaScriptで関連する名前を見つけるスクリプトを作成してナビゲーションメニューを整理しようとしています/contact.phpはちょうど連絡先を見つけます)、そのidを持つ要素を探します(私のリスト項目はidがターゲットに一致しています)。今では、要素のidを "cur"に入れ替えて、関連するスタイリングを行い、現在のページのタブの表示方法を変えたいとします。しかし、適切な構文を使用してreplaceNodeとreplaceChildを試してみても、私は問題を抱えています。ここではスクリプトはそのlongwinded形である:ノードを置換してノード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の使い方が良くなるように、私はあなたの提案と一緒に遊びます。

関連する問題