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]();
};

タイプミスが含まれていますurlhashedurlhash

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 に答える