0

我在document.ready中有函数,我想使用变量中的值调用它们。我尝试使用但它在document.readywindow[variablename]();中不起作用,但是当直接调用它时它可以工作。

认为这是document.ready里面的功能

$(document).ready(function() {

    function jhon(){
         alert('works');
    };
});

我从变量中获取函数名称,该变量的值是函数的名称..

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

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

当我这样打电话时它不起作用..

  window.onload=function() {
      window[urlhash]();
  };

但是当我像这样调用函数时它工作正常..

  window.onload=function() {
      jhon();
  };

是否可以使用变量值调用函数?

4

2 回答 2

3

这个:

window.onload=function() {
    window[urlhashed]();
};

包含一个错字:urlhashed应该是urlhash

window.onload=function() {
    window[urlhash]();
};

除此之外,您已经jhon()在另一个函数内部定义,该函数在该封闭函数范围内捕获它。

如果你想按预期进行这项工作,你应该改变它:

$(document).ready(function() {

    function jhon(){
         alert('works');
    };
});

更像这样:

$(document).ready(function() {

    window.jhon = function(){
         alert('works');
    };
});
于 2012-09-01T16:49:13.420 回答
1

定义jhon 外部的函数$(document).ready。否则,它将被隐藏,因此无法通过以下方式访问window[function_name]

function jhon(){
     alert('works');
};

$(document).ready(function() {
  var urlhash = document.location.hash;
  urlhash = urlhash.replace(/^.*#/, '');
  window[urlhash]();
});
于 2012-09-01T16:56:10.273 回答