如何从onClick调用函数
How to call a function from onClick
我正在尝试制作一个倒计时计时器,当你点击按钮时就会启动。我似乎无法用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 = '<h2>Countdown Complete!</h2>';
element.innerHTML += '<a href="#"> Click here now</a>';
}
secs--;
var timer = setTimeout('countDown('+secs+',"'+elem+'")',1000);
}
<div id="status"></div>
<form>
<input type="submit" name="go" onclick="countDown(5, 'status'); return false;">
</form>
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');
});
问题是您使用的是提交类型的按钮。如果您需要避免提交表单,请返回false
:
<div id="status"></div>
<form>
<input type="submit" name="go" onclick="countDown(10, 'status'); return false;">
</form>
有几件事,请在此处查找更改:http://codepen.io/anon/pen/EPggNJ
摘要:
- 您有一个局部变量
secs
,它总是从起始级别10开始递减,所以它总是9
,并且永远不会小于这个值 - 提交控件类型立即发送表单并重新加载页面
- 即使在
secs
的值由于未返回而小于0时也设置计时器
上面链接的分叉按预期工作。
您可以通过点击按钮调用javascript函数,如下所示:使用这个
<input type="submit" name="go" onclick="countDown(10, 'status'); return false">
相关文章:
- 如何从模块链中调用函数.导出到节点中
- 调用函数内部的函数
- 在javascript中调用c函数
- DropDownListFor赢得't在更改时调用函数
- Javascript页面调用函数
- 在动画结束之前调用函数
- 允许父窗口在其不同域的子iframe上调用函数
- 运行Infinite Scroll后调用函数时出现问题
- JavaScript:在调用函数的文本输入上按enter键
- 使用大括号和不使用bracs调用函数的区别
- javascript在事件上调用函数
- 从index.html调用函数,该函数无限循环
- 从带参数的字符串变量调用函数中的函数
- 为什么 JS 不在滚动时调用函数
- 是否可以在不更改上下文的情况下调用函数.apply
- 如何在ES6类中使用参数调用函数
- AngularJS:调用函数时编号不更新
- JavaScript中的立即调用函数表达式(IIFE)-传递jQuery
- 在JavaScript中调用函数时自定义此选项
- 调用函数中声明的变量