2014-07-16 43 views
0

我的脚本出了什么问题。在点击功能后它不会改变变量d。我也尝试过window.d,但仍然是一样的。更改document.ready中的变量javascript

var d = undefined; 
$(document).ready(function(){ 

    if ($(window).scrollTop() !== 460) { 
     d = $(window).scrollTop(); 
    } else { 
     d = 459; 
    } 

    if (d < 459) { 

     $('#drop1, #drop2, #drop3').on('click',function(){ 

      $.scrollTo(460, 900, { easing: 'easeOutExpo' }); 
      $(document).scroll(); 
      d = 500; 
     });  

    } else { 
     console.log(window.d); 
    } 
}); 
+1

您可以*请*使用[合理的缩进](http://jsbeautifier.org/)? – Bergi

+5

你怎么知道它不会改变它?您似乎没有在点击发生后的任何位置进行测试。我想你可能会误解事件或事件驱动的代码是如何工作的。 –

+0

只有当d小于459时,onclick函数才能正常工作。如果我在函数中设置d为500,那么id似乎不起作用。我也看到它在console.log – parat10

回答

0

基础上OP的评论“的onclick函数应该只有当d比459更小的工作”,我不知道这是什么,他要寻找的:

var d = undefined; 
$(document).ready(function(){ 

    if ($(window).scrollTop() !== 460) { 
     d = $(window).scrollTop(); 
    } else { 
     d = 459; 
    } 

    $('#drop1, #drop2, #drop3').on('click',function() { 
     // move d<459 test inside click event 
     // the click event will always be fired, but the 
     // scroll effect will only occur if d<459 
     if (d < 459) { 
      $.scrollTo(460, 900, { easing: 'easeOutExpo' }); 
      $(document).scroll(); 
      d = 500; 
     }; 
     console.log(d); // always tell me d for debugging 
    }}; 
}); 

当然,点击事件可只触发一次滚动效果;然后它设置d = 500,除非再次将d重新设置在其他地方,否则(d < 459)将永远不会变为真。