2015-10-16 41 views
1

的具體功能是這可能嗎?JS:致電給定的腳本對象

myscripts = document.getElementsByTagName("script"); 
myscripts[0].init(); 

的問題

我使用highslide幾個HTML窗口(htmlExpand)。每個腳本都有一個init()函數。 如果打開一個窗口,應該調用它包含的init函數。

因爲,現在有幾個初始化函數,我不能直接調用它,因爲它在大多數情況下,調用錯誤的函數。

hs.Expander.prototype.onAfterExpand = function (sender) {init()} 

我有打電話給定的腳本對象

hs.Expander.prototype.onAfterExpand = function (sender) { 
    var content = this.content.getElementsByClassName("highslide-maincontent")[0]; 
    var myscripts = content.getElementsByTagName("script"); 
    for (var i = 0; i < myscripts.length; i ++){ 
    if (typeof myscripts[i].init == "function"){ 
     myscripts[i].init(); 
    } 
} 

的功能,但我怎麼能做到這一點?這不管用。

myscripts[i].init(); 

那麼,如何我可以打電話給定的腳本對象

回答

0

的功能不,這是不可能的,因爲HTMLScriptElement,通過document.getElementsByTagName("script")[0]在你的代碼塊返回,沒有一個init()方法。事實上,它沒有任何方法,也沒有從其父母上鍊HTMLElement,Element,NodeEventTarget繼承init()

我認爲你試圖揭露在任何JS對象是在一個特定的腳本添加init()方法。但是,你不會那樣做。爲此,您可能需要查看如下內容:https://css-tricks.com/how-do-you-structure-javascript-the-module-pattern-edition/

相關問題