我正在尝试从这个秒表示例中学习。我希望能够通过单击此页面上未定义的另一个 html 元素来启动秒表。
如何在其他地方使用“开始”功能(例如页面重新加载等)?
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();
问题1:如何在其他地方调用启动函数?全局?
最佳答案
如果“未在此页面上定义”是指 HTML 文档中的浏览器页面,那么这是不可能的。一旦您切换页面(甚至重新加载页面),代码就会在不同的上下文中运行。
假设这就是您想要的,您可以通过不实际离开页面,而是加载另一个页面并替换当前页面内容来解决此问题。
如果您不离开页面,您的 dTimer 对象应该可以全局访问。
关于JavaScript;如何使函数全局可访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27789050/