这段代码还有其他的写法吗?

h123hu 2015-07-14 03:21:43

<div class="div1"></div>
<div class="div1"></div>
<div class="div1"></div>
function aaa(obj){
clearInterval(obj.timer); //这样写报错
obj.timer=setInterval(function(){
console.log('121231321');
},10);
}


意图是假设我有N个DIV,CLASS名也是一样,并且通过CLASS来获取他们,
然后,不管点谁,都会执行一次aaa

问题来了,
上面那种写法会报错,还有其他的写法吗?
还有其他的实现方法么?求指点
...全文
271 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
sydhr_1994 2015-07-17
  • 打赏
  • 举报
回复
window.onload = function(){ var btn = document.getElementsByClassName("dov1"), len = btn.length; for(var i = 0; i <len; i++){ var obj = btn[i]; obj.timer = null; obj.addEventListener ("click",function(obj){ clearInterval(obj.timer); obj.timer=setInterval(function(){ console.log('121231321'); },10); }) } } 改成这段就没问题了
h123hu 2015-07-16
  • 打赏
  • 举报
回复
引用 10 楼 u011973038 的回复:
是我猜错了还是你本意就是这样的? obj变了,所以clearInterval(obj.timer)的意义只是清除上次在当前元素下设置的定时器。。。
分别给每个div1设置自己的定时器 清除的时候,也是只清除对应的定时器 不会会其他的有影响
h123hu 2015-07-16
  • 打赏
  • 举报
回复
引用 11 楼 danica7773 的回复:
你的setInterval是所有div1共用,還是每個div1有自己單獨的定時程序。
每个div1独有的
打字员 2015-07-16
  • 打赏
  • 举报
回复
你的setInterval是所有div1共用,還是每個div1有自己單獨的定時程序。
打字员 2015-07-16
  • 打赏
  • 举报
回复
不知道是否與你的需求相合,因為不明白你說的不能用obj.timer是什麽原因。不過下面的兩種寫法你可以試試

<!--這個是把定時器綁定在dom元素上-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
*{margin:0;padding:0;}
.test1{height:30px;margin:20px auto;text-align:center;background-color:#aaa;}
</style>
<script type="text/javascript">
	function time() {
		if(typeof this.timer != 'undefined') {
			clearInterval(this.timer);
		}
		this.start = 0;
		this.timer = setInterval((function(o) {
			return function() {
				o.start += 1;
				o.innerHTML = o.start;
			}
		})(this), 500);		
	}
	window.onload = function() {
		var i, size;
		var nodes = document.getElementsByClassName('test1');
		for(i = 0, size = nodes.length; i < size; i++) {
			nodes[i].onclick = time;
		}
	}
</script>
</head>
<body>
    <div class="test1"></div>
	<div class="test1"></div>
	<div class="test1"></div>
</body>
</html>

<!--這個是用一個局部變量保存定時器-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
*{margin:0;padding:0;}
.test1{height:30px;margin:20px auto;text-align:center;background-color:#aaa;}
</style>
<script type="text/javascript">
	function time(node) {
		if(typeof this.timer != 'undefined') {
			clearInterval(this.timer);
		}
		this.start = 0;
		this.timer = setInterval((function(o, t) {
			return function() {
				t.start += 1;
				o.innerHTML = t.start;
			}
		})(node, this), 500);		
	}
	window.onload = function() {
		var i, size;
		var nodes = document.getElementsByClassName('test1');
		var temps = {};
		for(i = 0, size = nodes.length; i < size; i++) {
			temps[i] = {};
			nodes[i].onclick = (function(index) {
				return function() {
					time.call(temps[index], this);
				};
			})(i);
		}
	}
</script>
</head>
<body>
    <div class="test1"></div>
	<div class="test1"></div>
	<div class="test1"></div>
</body>
</html>
水墨悼影 2015-07-15
  • 打赏
  • 举报
回复
是我猜错了还是你本意就是这样的? obj变了,所以clearInterval(obj.timer)的意义只是清除上次在当前元素下设置的定时器。。。
h123hu 2015-07-15
  • 打赏
  • 举报
回复
引用 6 楼 tianmak1 的回复:
window.onload = function(){
            var btn = document.getElementsByClassName("dov1"),
                len = btn.length;
            for(var i = 0; i <len; i++){
                var obj = btn[i];
                obj.addEventListener ("click",function(obj){
                    clearInterval(obj.timer); 
                    obj.timer=setInterval(function(){
                        console.log('121231321');
                    },10);
                })
            }
        }
好吧,看来我写的复杂了, 我只是想问,当obj.timer,这样写不了的时候,还有什么代替的写法?
陈汉丰 2015-07-15
  • 打赏
  • 举报
回复
window.onload = function(){
            var btn = document.getElementsByClassName("dov1"),
                len = btn.length;
            for(var i = 0; i <len; i++){
                var obj = btn[i];
                obj.addEventListener ("click",function(obj){
                    clearInterval(obj.timer); 
                    obj.timer=setInterval(function(){
                        console.log('121231321');
                    },10);
                })
            }
        }
h123hu 2015-07-15
  • 打赏
  • 举报
回复
引用 8 楼 tianmak1 的回复:
[quote=引用 7 楼 h123hu 的回复:] [quote=引用 6 楼 tianmak1 的回复:]
window.onload = function(){
            var btn = document.getElementsByClassName("dov1"),
                len = btn.length;
            for(var i = 0; i <len; i++){
                var obj = btn[i];
                obj.addEventListener ("click",function(obj){
                    clearInterval(obj.timer); 
                    obj.timer=setInterval(function(){
                        console.log('121231321');
                    },10);
                })
            }
        }
好吧,看来我写的复杂了, 我只是想问,当obj.timer,这样写不了的时候,还有什么代替的写法?[/quote] 我不明白你的意思,是不是点击div,就不断执行一个函数?setTimeOut也可以

function Aaa(){
    //code
    setTimeOut(Aaa,time);
}
Aaa();
[/quote] 感谢回复,是这样的,我的意思是 我所在的环境里面,使用obj.timer这种写法会报错 不用纠结用哪个定时器 我只是想知道,除了obj.timer这种写法,还有什么代替的写法 可以分别给对象绑定不同的定时器
陈汉丰 2015-07-15
  • 打赏
  • 举报
回复
引用 7 楼 h123hu 的回复:
[quote=引用 6 楼 tianmak1 的回复:]
window.onload = function(){
            var btn = document.getElementsByClassName("dov1"),
                len = btn.length;
            for(var i = 0; i <len; i++){
                var obj = btn[i];
                obj.addEventListener ("click",function(obj){
                    clearInterval(obj.timer); 
                    obj.timer=setInterval(function(){
                        console.log('121231321');
                    },10);
                })
            }
        }
好吧,看来我写的复杂了, 我只是想问,当obj.timer,这样写不了的时候,还有什么代替的写法?[/quote] 我不明白你的意思,是不是点击div,就不断执行一个函数?setTimeOut也可以

function Aaa(){
    //code
    setTimeOut(Aaa,time);
}
Aaa();
qq_29825667 2015-07-14
  • 打赏
  • 举报
回复
引用 4 楼 jslang 的回复:
obj是什么对象,看看有没有传错 你最好把完整代码发上来
ojb就是鼠标点击某个DIV后,获取到的 1楼应该说了的
天际的海浪 2015-07-14
  • 打赏
  • 举报
回复
obj是什么对象,看看有没有传错 你最好把完整代码发上来
h123hu 2015-07-14
  • 打赏
  • 举报
回复
引用 2 楼 jslang 的回复:
你aaa函数是怎么调用的
鼠标事件
天际的海浪 2015-07-14
  • 打赏
  • 举报
回复
你aaa函数是怎么调用的
五更琉璃 2015-07-14
  • 打赏
  • 举报
回复
if(obj.timer) 加个判断

87,884

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧