Javascript;如何使函数全局可访问


  1. 我试图从这个秒表的例子中学习。我希望能够通过单击此页面上未定义的另一个 html 元素来启动秒表。

  2. 如何在其他地方使用"开始"功能(例如页面重新加载等)?

    var Stopwatch = function(elem, options) {
      var timer       = createTimer(),
          startButton = createButton("start", start),
          offset,
          clock,
          interval;
      // append elements     
      elem.appendChild(startButton);
      reset();
      // private functions
      function createTimer() {
        return document.createElement("span");
      }
      function createButton(action, handler) {
        var a = document.createElement("a");
        a.href = "#" + action;
        a.innerHTML = action;
        a.addEventListener("click", function(event) {
          handler();
          event.preventDefault();
        });
        return a;
      }
      function start() {
        if (!interval) {
          offset   = Date.now();
          interval = setInterval(update, options.delay);
        }
      }         
      // public API
      this.start  = start;
    };
    var d = document.getElementById("d-timer");
    dTimer = new Stopwatch(d, {delay: 1000});
    dTimer.start();
    

Q1: 如何在其他地方调用启动函数?全球?

如果"未在此页面上定义"是指HTML文档中的浏览器页面,那么这是不可能的。一旦切换页面(甚至重新加载页面),代码就会在不同的上下文中运行。

假设这是您想要的,您可以通过不实际离开页面,而是加载另一个页面并替换当前页面内容来解决此问题。

如果不离开页面,则 dTimer 对象应可全局访问。

您可以通过执行以下操作将其分配给窗口范围:

window.functionName = function(){
  //your code here
}

问题实际上是拼写错误的"id"值。

当然,正如Matias所建议的那样,详细研究javascript会有所帮助。

相关内容

  • 没有找到相关文章

最新更新