【问题标题】:JS: Call a specific function of a given script-objectJS:调用给定脚本对象的特定函数
【发布时间】:2015-10-16 19:39:19
【问题描述】:

这可能吗?

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

问题

我在几个 html-Windows (htmlExpand) 中使用 highslide。每个都有一个带有 init() 函数的脚本。 如果打开了一个窗口,应该调用它包含的 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();

那么,我如何调用给定脚本对象的函数

【问题讨论】:

    标签: javascript dom call highslide


    【解决方案1】:

    不,这是不可能的,因为HTMLScriptElement,由您的代码块中的document.getElementsByTagName("script")[0] 返回,没有init() 方法。实际上,它没有任何方法,也没有从其父级HTMLElementElementNodeEventTarget 继承init()

    我认为您正试图在特定脚本中添加的任何 JS 对象上公开 init() 方法。但是,你不会那样做。为此,您可能需要查看以下内容:https://css-tricks.com/how-do-you-structure-javascript-the-module-pattern-edition/

    【讨论】:

      猜你喜欢
      • 2016-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-27
      • 1970-01-01
      • 2012-05-14
      相关资源
      最近更新 更多