2015-10-16 76 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/