退色功能故障
fade function trouble
本文关键字:功能故障 更新时间:2023-09-26
我编写了一个脚本,当鼠标经过按钮时淡出按钮,鼠标退出时淡出按钮。它在'mouseover'事件上工作得很好,但在'mouseout'事件上失败了,有什么想法吗?
注:我没有使用jquery,因为我想学习它的教育目的。
到这里查看代码:http://jsfiddle.net/assuredlonewolf/t2sYX/请随意编辑!
有两个问题:
- 间隔被多次创建,并且无处清除
- 您使用
< 1.1
来确定元素是否应该变得可见,而fade
计数从1.1开始。显然,1.1绝不会低于1.1。
更新的代码,如果你在实现它时有困难,请随时寻求帮助:
var interval; // Declare a variable to hold the timer OUTSIDE the function,
// so that all event listeners can work with ONE interval
function fade(elem, speed, mode) {
var count = 0;
var fade = 1.0;
clearInterval(interval); // Clear interval, to prevent having multiple
// running intervals
if (mode === true && count == 0) {
count = 1;
interval = setInterval(function() {
fade = fade - .1;
if(fade > -.1) document.getElementById(elem).style.opacity = fade;
}, speed)
} else {
count = 0;
interval = setInterval(function() {
fade = fade + .1;
// Updated code below: Replaced < with <=
if(fade <= 1.1) document.getElementById(elem).style.opacity = fade;
}, speed)
}
}
额外的提示:
- 出于性能考虑,将
document.getElementById(elem)
存储在区间函数之外的变量中(但在function fade
中)。变量查找比函数调用更便宜。
首先,永远不要停止间隔计时器。一旦开始,就会永远持续下去。您需要保存设置间隔的返回值,并在完成渐变时使用clearInterval停止计时器。
相关文章:
- 添加文字和评论功能更新Div
- JavaScript打印功能使日历停止工作
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 如何防止网页加载后自动启动功能
- 除修剪外的其他功能
- 悬停功能触发器
- 使用angularjs向浏览器发送servlet响应(下载功能)
- javascript.点击隐藏事件故障
- 删除CKEditor工具栏按钮,但不删除功能
- 异步facebook功能
- 如何将chrome扩展功能移植到移动设备(特别是jquery和trello)
- jQuery滚动功能只工作一次
- Jquery&有故障的功能
- 如何在使用$.post发送&将数据与done&故障功能
- OL3-检测点击功能时出现故障
- 超时功能和jquery出现故障
- 网络风暴:'在浏览器中打开'功能故障
- 退色功能故障
- 在while循环中激活功能时出现故障
- 使用.show()和.hide()功能的JavaScript/JQuery代码的故障排除