首页 新闻 会员 周边 捐助

有木有大神知道我的定时器为啥没起作用???

0
悬赏园豆:5 [已解决问题] 解决于 2016-03-30 18:18
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档ccc</title>
<style>
#div1{width:30px;height:500px;background:yellow;position:absolute;top:30px;}
 #div2{width:30px;height:30px;background:red;position:absolute;}
 #div3{width:800px; background:url(img/1.jpg);position:absolute;left:40px;top:30px;}
 </style>
<script>
window.onload = function() {
 
 var oDiv1=document.getElementById('div1');
  var oDiv2=document.getElementById('div2');
  var oDiv3=document.getElementById('div3');
  var timer=null;
  
  document.onclick=function(){
  timer=setTimeout(function(){ oDiv2.onmousedown=function(ev){
    var ev=ev||event;
     var disY=ev.clientY-this.offsetTop;
     var T=0;
     document.onmousemove=function(ev){
        var ev=ev||event;
        var iScale=0;
        var Tmax=oDiv1.offsetHeight-oDiv2.offsetHeight;
        
        
        T=ev.clientY-disY;
        if(T<0)
        {T=0;}
        else if(T>Tmax){T=Tmax;}
        oDiv2.style.top=T+'px';
        
        iScale=T/Tmax;
        oDiv3.style.height=iScale*500+'px';
     
     }
     document.onmouseup=function(){
        document.onmousemove=document.onmouseup=null;
     }
  
  
  }
  
  },100);
  
    }
    
};
 
 

</script>
</head>

<body>
     <div id="div1">
        <div id="div2"></div>
     </div>
     <div id="div3"></div>
      
</body></html>
hduhdc的主页 hduhdc | 初学一级 | 园豆:106
提问于:2016-03-24 21:48
< >
分享
最佳答案
0

oDiv2.onmousedown=function(ev){
var ev=ev||event;
var disY=ev.clientY-this.offsetTop;
var T=0;
document.onmousemove=function(ev){
var ev=ev||event;
var iScale=0;
var Tmax=oDiv1.offsetHeight-oDiv2.offsetHeight;


T=ev.clientY-disY;
if(T<0)
{T=0;}
else if(T>Tmax){T=Tmax;}
oDiv2.style.top=T+'px';

iScale=T/Tmax;
oDiv3.style.height=iScale*500+'px';

}
document.onmouseup=function(){
document.onmousemove=document.onmouseup=null;
}

 

这一段写的有问题

收获园豆:3
李伟-CodeL | 初学一级 |园豆:87 | 2016-03-24 22:36

请问什么问题??

hduhdc | 园豆:106 (初学一级) | 2016-03-25 08:46
其他回答(1)
0
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档ccc</title>
<style>
#div1{width:30px;height:500px;background:yellow;position:absolute;top:30px;}
 #div2{width:30px;height:30px;background:red;position:absolute;}
 #div3{width:800px; background:url(img/1.jpg);position:absolute;left:40px;top:30px;}
 </style>
<script>
    var oDiv1,oDiv2,oDiv3,timer; //把变量提出来,你的方法里面看不到这些变量
window.onload = function() {
 
  oDiv1=document.getElementById('div1');
   oDiv2=document.getElementById('div2');
   oDiv3=document.getElementById('div3');
   timer=null;
  
  document.onclick=function(){
  timer=setTimeout(function(){ oDiv2.onmousedown=function(ev){
    var ev=ev||event;
     var disY=ev.clientY-this.offsetTop;
     var T=0;
     document.onmousemove=function(ev){
        var ev=ev||event;
        var iScale=0;
        var Tmax=oDiv1.offsetHeight-oDiv2.offsetHeight;
        
        
        T=ev.clientY-disY;
        if(T<0)
        {T=0;}
        else if(T>Tmax){T=Tmax;}
        oDiv2.style.top=T+'px';
        
        iScale=T/Tmax;
        oDiv3.style.height=iScale*500+'px';
     
     }
     document.onmouseup=function(){
        document.onmousemove=document.onmouseup=null;
     }
  
  
  }
  
  },100);
  
    }
    
};
 
 

</script>
</head>

<body>
     <div id="div1">
        <div id="div2"></div>
     </div>
     <div id="div3"></div>
      
</body></html>

 

收获园豆:2
刘宏玺 | 园豆:14020 (专家六级) | 2016-03-24 22:21

你好当时复制有误

var oDiv1=document.getElementById('div1');
var oDiv2=document.getElementById('div2');
var oDiv3=document.getElementById('div3');

我开始声明了的,浏览器也没有报错?但是setInterval一直不起作用

支持(0) 反对(0) hduhdc | 园豆:106 (初学一级) | 2016-03-25 08:50

@hduhdc: 你的变量是在onload事件中的,不是全局的,而setInterval和setTimeout的方法中使用的变量或者是调用方法必须是全局的

我估计你连我发的代码都没有执行过,下次你先验证下在回复

支持(0) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2016-03-25 10:08

@刘宏玺: 这个地方可以不用全局变量,写在内部可以形成闭包,同样可以正常访问。

支持(0) 反对(0) 孤独傲雪 | 园豆:207 (菜鸟二级) | 2016-03-26 16:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册