使用window [variablename]()调用函数;在document.ready

时间:2012-09-01 16:47:01

标签: javascript

我的功能在 document.ready 旁边,我想在变量中使用值来调用它们。我尝试使用window[variablename]();但是它在内部无效document.ready ,但直接调用它就可以了..

认为这是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();
  };

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

2 个答案:

答案 0 :(得分: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');
    };
});

答案 1 :(得分:1)

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

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

$(document).ready(function() {
  var urlhash = document.location.hash;
  urlhash = urlhash.replace(/^.*#/, '');
  window[urlhash]();
});