JavaScript的;如何使全局访问功能?

时间:2015-01-05 22:32:44

标签: javascript global-variables

  1. 我正在尝试从这个秒表示例中学习。我希望能够通过点击此页面上未定义的其他html元素来启动秒表。

  2. 如何使用' start'其他地方的功能(例如页面重新加载等)?

    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();
    
  3. Q1:我怎样才能在其他地方调用启动功能?全球?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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

如果您不离开页面,您的dTimer对象应该可以全局访问。

答案 2 :(得分:0)

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

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

相关问题