这可能吗?
Item# | Bill# | Profit
1 1 100
2 1 200
1 2 100
2 2 200
问题
我使用highslide和几个html-Windows(htmlExpand)。每个人都有一个带init()函数的脚本。 如果打开一个Window,则应调用它包含的init函数。
因为,现在有几个init函数,我无法直接调用它,因为它在大多数情况下调用了错误的函数。
myscripts = document.getElementsByTagName("script");
myscripts[0].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();
}
}
那么,我如何调用给定脚本对象的函数
答案 0 :(得分:0)
这是不可能的,因为代码块中document.getElementsByTagName("script")[0]
返回的HTMLScriptElement
没有init()
方法。实际上,它没有任何方法,也没有从其父级继承HTMLElement
,Element
,Node
,或者EventTarget
。
我认为您试图在特定脚本中添加任何JS对象时公开init()
方法。但是,你不会那样做。为此,您可能希望查看类似:https://css-tricks.com/how-do-you-structure-javascript-the-module-pattern-edition/