2011-09-05 17 views
2

私はXML駆動のホームページを作っています。メニュー構造が生成され、メニュー要素をクリックすると、ページ上のコンテンツが変更されます。レベルx要素をクリックすると、その子要素がメインdivのリストに表示されます。これは、情報を得るために正しいXMLノードを見つけるために引数としてidをとる関数changePage(id)によって行われます。グローバル変数を使用してJavascriptの同じ関数内から関数を呼び出す

私はこのリストの要素をリンクにしたいのですが、クリックするとchangePage-functionを呼び出す必要があります。これは、ツリー内を降りるのに使用されます。

var root = loadXML(aXML.xml); 

function changePage(id){ 
var current_node = root; // <-- here I get error when clicking on the a-element. 
... // creating list 
var aElement = document.createElement('a'); 
aElement.onclick = new Function("changePage('" + index + "')"); 
} 

私が作成したリストの要素をクリックしたとき、私は「current_nodeのが定義されていない」というエラーが出る私のメニュー項目のすべての作品をクリックしますけど。子をクリックすると、ルート変数が見つからないようです。

何が問題なのですか?これを解決するにはどうすればよいですか?

+1

敬具、[閉鎖](http://jibbering.com/faq/notes/closures/)の代わりに新しいFunction'、例えば 'の'aElement.onclick = function(イベント){changePage(index)};'。それは問題があなたがここに示すコードにあるとは思わないと言いました。 –

+0

私はクロージャーに変更しました。もっとよく見えました。私も自分の問題を発見した、私は間違ったIDを書いたので、私の関数はそれが前にクラッシュしたので、current_nodeを見つけることができませんでした。 –

+0

http://jquery.com/一見の価値があるかもしれません。 – NimChimpsky

答えて

0

こんにちはあなたはそこにあなたが新しい機能を持つブラウザ(古いものをoverwriteing)

の代わりに殺害されて持っているものから:

aElement.onclick = new Function("changePage('" + index + "')"); 

を使用することができます:

aElement.onclick = arguments.callee(index); 

」 arguments "はjsのキーワードであり、関数に渡されるすべてのパラメータ(arguments [0])を持つオブジェクトを含み、" callee "(関数自体)と" caller "(関数が呼び出されます)。 2番目のもの(呼び出し元)はブラウザ間ではありません。あなたが使用する必要があります

関連する問題