0

您好,我有一个执行操作的函数,但函数的名称在变量中...

下面的代码将获取 URL 的散列部分示例:#JHON 并删除 # 并将其存储在 URLHASH 变量中..示例:JHON

  var urlhash = document.location.hash;
  urlhash = urlhash.replace(/^.*#/, '');

变量内的值总是有一个函数名,我想将该变量内的值作为函数名调用

  window.onload=function() {
    Value inside URLHASH variable should run as a name of a variable. example: jhon();
  };

可能吗 ?我尝试了一些代码,但它调用变量名作为函数而不是变量内的值..帮助我..

4

2 回答 2

4

您可以使用以下内容:

window[urlhash]();

这将调用一个函数,其名称是变量的值urlhash定义在window. 这是一个演示

于 2012-09-01T15:21:07.333 回答
0

您可以像访问数组索引一样访问对象的属性,例如,您可以这样运行getElementById

document["getElementById"]("#myid");

所以&如果您事先知道该函数将成为哪个对象的成员,您可以通过这种方式访问​​它。全局范围内的函数是窗口对象的方法。但是,如果散列可能包含诸如 之类的表达式#document.write(),则必须进行一些解析。它可以这样工作

window.onload=function() {
    var urlhash = document.location.hash, current_element = window;
    urlhash = urlhash.replace(/^.*#/, '');
    elements = urlhash.split(".");
    for(var i=0; i<elements.length; i++){
        current_element = current_element[elements[i]];
    }
    //execute the actual function
    current_element();
};
于 2012-09-01T15:33:30.693 回答