我正在尝试制作一个倒计时器,当你点击按钮时开始.我似乎无法使用onclick调用该函数.使用onclick中的字符串参数调用函数的正确语法是什么?我试过了:
onclick="countDown(10, 'status')"
但这不起作用.谁知道我做错了什么?
演示:
function countDown(secs,elem) {
var element = document.getElementById(elem);
element.innerHTML = "Please wait for "+secs+" seconds";
if(secs<1){
clearTimeout(timer);
element.innerHTML = 'Countdown Complete!
';
element.innerHTML += ' Click here now';
}
secs--;
var timer = setTimeout('countDown('+secs+',"'+elem+'")',1000);
}
http://codepen.io/michaelaharvey/pen/WrGxYp
这是正确的语法(至少如果你要使用内部事件属性),但是你已经在提交按钮上使用它,所以在函数运行后的瞬间,表单提交并加载一个新页面(消除了你用JS做的改变).
您可以从onclick函数返回false以防止默认行为:
onclick="countDown(10, 'status'); return false;"
现代代码倾向于使用JavaScript绑定事件处理程序.
document .querySelector("input[type=submit]") .addEventListener("click", function (event) { event.preventDefault(); countDown(10, 'status'); });