使用全局变量在JavaScript中调用函数内部功能
问题描述:
我正在制作一个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没有定义”的错误。看起来,点击儿童时发现根变量不可用。
什么是错,我能做些什么来解决这个问题?
答
你好,从你有没有你正在扼杀新功能的浏览器(overwriteing旧)
相反的:
aElement.onclick = new Function("changePage('" + index + "')");
你可以使用:
aElement.onclick = arguments.callee(index);
“参数“是js中的一个关键字,它包含一个包含传递给函数的所有参数的对象(即参数[0]),还包含”被调用者“(函数本身)和”调用者“(从中调用函数)。第二个(调用者)不是跨浏览器的。
此致敬礼
您应该使用[闭包](http://jibbering.com/faq/notes/closures/)而不是'new Function',例如, 'aElement.onclick = function(event){changePage(index)};'。也就是说,我不认为问题在于你在这里展示的代码。 –
我改为关闭。看起来更好。我也发现我的问题,我写了错误的ID,所以我的函数找不到current_node,因为它在之前崩溃了。 –
http://jquery.com/可能是值得一试 – NimChimpsky