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

これにより、のコンテキストで定義された変数のが名前の関数が呼び出されます。これがデモです。urlhashwindow

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