Java脚本;我怎样才能让一个功能全球访问?

Javascript; how can I make a function globally accessible?

  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();
    

Q1:如何才能在别处调用启动函数?全球?

您可以通过以下操作将其分配给 window 范围:

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

如果 "not defined on this page" 是指 HTML 文档中的浏览器页面,那么这是不可能的。只要您切换页面(甚至重新加载页面),代码就会 运行 在不同的上下文中。

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

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

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

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