Java脚本;我怎样才能让一个功能全球访问?
Javascript; how can I make a function globally accessible?
我正在尝试从这个秒表示例中学习。我希望能够通过单击另一个未在此页面上定义的 html 元素来启动秒表。
如何在其他地方(例如页面重新加载等)使用 '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 会有所帮助。
我正在尝试从这个秒表示例中学习。我希望能够通过单击另一个未在此页面上定义的 html 元素来启动秒表。
如何在其他地方(例如页面重新加载等)使用 '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 会有所帮助。