2012-09-01 117 views
0

你好,我必須執行行動,但該函數的名稱是一個變量裏面的函數...期權價值

下面的代碼將得到URL的哈希部分例如:#JHON並刪除#,並將其存儲URLHASH variable..example內: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(); 
    }; 

這可能嗎?我嘗試了一些代碼,但它調用變量名作爲函數不是variable..help我內在價值..

回答

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

是啊,這是完美的me..works比expected..thnks很多SYS更好。 – user1640668

4

您可以使用以下方法:

window[urlhash](); 

這將調用其名稱是功能所述urlhash變量的值,在window上下文中定義。這裏有一個DEMO

+0

不是爲我工作.. :( – user1640668

+0

哪裏是你的函數定義你能給我舉一個例子,在看就拿這個工作呢?例如:?http://jsfiddle.net/k9yxc/ –

+0

是在全球範圍內的功能,或不同對象的一部分。是否哈希包含點('#myobject.dosomething')?如果是這樣,看看我的回答,它涵蓋了如何解析的哈希值。如果你的功能存儲在不同的對象,你可以用你的對象的名稱替換'window'在這個答案。 – bigblind