如何使用onclick事件触发此代码.我尝试过,但失败了
how to i trigger this code with an onclick event. I have tried and failed
当我点击div框时,我似乎无法触发代码——它只是保持加载运行。
<div id='tank' onclick="timer" style="position:relative; left:100px; top:240px;border- radius:360px;
background-color:green; height:100px; width:100px;"></div>
<script type="text/javascript">
(function () {
// don't leak variables into the global scope - think "variable = carbon dioxide"
var elem = document.getElementById('tank'), pos = 100,
timer = setInterval(function() {
pos++;
elem.style.left = pos+"px";
if( pos == 290) clearInterval(timer);
},12);
})();
(function () {
//...
}());
立即在函数中运行代码,因此您的代码在页面加载时运行也就不足为奇了。
onclick="timer"
什么都不做。这和写一些类似的东西是一样的:
var foo = 42;
foo; // <- this does not do anything
更糟糕的是,如果没有定义timer
,这将引发一个错误(在您的示例中就是这样)。
您要做的是为元素分配一个函数作为点击事件处理程序。例如:
document.getElementById('tank').onclick = function() {
var elem = this,
pos = 100,
timer = setInterval(function() {
pos++;
elem.style.left = pos+"px";
if( pos == 290) clearInterval(timer);
},12);
};
(并从HTML中删除onclick="timer"
)
我建议阅读quicksmode.org上的优秀文章,了解更多关于事件处理的信息。
<div id='tank' onclick="timer()" style="position:relative; left:100px; top:240px;border-radius:360px; background-color:green; height:100px; width:100px;">
</div>
<script type="text/javascript">
function timer (){
alert("h");
var elem = document.getElementById('tank'), pos = 100,
timer = setInterval(function() {
pos++;
elem.style.left = pos+"px";
if( pos == 290) clearInterval(timer);
},12);
}
</script>
对代码进行轻微修改。
相关文章:
- 如何使用onclick事件触发此代码.我尝试过,但失败了
- 解析云代码不会记录/警告成功或失败
- jQuery代码在Firefox中工作,但在IE中失败
- 执行Haxe代码时Ant构建失败
- *简单*解析云代码查询失败”;TypeError:无法调用方法'获取'未定义的“检索该信息”;
- 云代码(javascript)失败,原因是:{代码:1,消息:内部错误
- 只有从Node运行时,Rsync才会失败,退出代码为23
- node.js非阻塞代码示例失败
- 检查 http 响应代码以显示相应的失败消息
- JS验证在正常速度下失败,但在单步执行代码时有效
- 解析云代码部署失败,并显示消息“更新失败,出现内部错误”
- 带有 AJAX 下拉菜单的代码点火器在form_validation失败并重定向/重新加载视图后不起作用
- JSON 失败并继续执行代码
- 防止 php 在 Javascript 验证失败后执行代码,并防止某些字符使用 JS
- 弹出窗口代码失败
- Javascript代码仅在FireFox中的try-catch块中失败
- 为什么我的窗口导航代码失败
- JavaScript代码不断失败
- FireFox中HTML/iframe错误-组件返回失败代码:0x80004005 (NS_ERROR_FAILURE)
- gruntjs遇到失败代码后进行清理