2011-09-05 67 views
2

我正在製作一個XML驅動的主頁。生成菜單結構,當點擊菜單元素時,頁面上的內容會改變。當點擊一個level x元素時,它的子元素將出現在主div的列表中。這是通過一個函數changePage(id)完成的,它將一個id作爲參數來查找正確的XML節點以獲取信息。使用全局變量在JavaScript中調用函數內部功能

我想這個列表中的元素是鏈接,點擊時他們應該調用changePage函數。這用於在樹中下臺。

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/)而不是'new Function',例如, 'aElement.onclick = function(event){changePage(index)};'。也就是說,我不認爲問題在於你在這裏展示的代碼。 –

+0

我改爲關閉。看起來更好。我也發現我的問題,我寫了錯誤的ID,所以我的函數找不到current_node,因爲它在之前崩潰了。 –

+0

http://jquery.com/可能是值得一試 – NimChimpsky

回答

0

你好,從你有沒有你正在扼殺新功能的瀏覽器(overwriteing舊)

相反的:

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

你可以使用:

aElement.onclick = arguments.callee(index); 

「參數「是js中的一個關鍵字,它包含一個包含傳遞給函數的所有參數的對象(即參數[0]),還包含」被調用者「(函數本身)和」調用者「(從中調用函數)。第二個(調用者)不是跨瀏覽器的。

此致敬禮