Javascript if语句无法正常工作

时间:2012-02-13 14:37:20

标签: javascript slider counter

  //this counts how many images exist
  var img_count = $("#gallery_scroller img").length;
  //this is a number where I want the clicks to stop working
  var limit_count = img_count/3;

  var click_count = 1;

  if ( limit_count > click_count){

    $("#down_arrow").click(function(){
      click_count++
      var css_position = -1*click_count*300;
      $('#gallery_scroller img').css('top', css_position);
      alert(css_position+' '+limit_count+' '+click_count);
    });
  };

我把警报放在最后,这样我每次点击都可以观察到这些值。即使click_count大于limit_count,它也会继续运行。在if条件中,当我将click_count替换为大于limit_count的实际数字时,它可以工作。

3 个答案:

答案 0 :(得分:3)

您的if语句不在click事件处理程序的代码中。附加处理程序后,只有处理程序中的代码才会在单击发生时运行。

我不完全确定你想要的结果是什么,但这可能更接近:

//this counts how many images exist
var img_count = $("#gallery_scroller img").length;
//this is a number where I want the clicks to stop working
var limit_count = img_count/3;

var click_count = 1;

$("#down_arrow").click(function(){
    if ( limit_count > click_count){
        click_count++;
        var css_position = -1*click_count*300;
        $('#gallery_scroller img').css('top', css_position);
        alert(css_position+' '+limit_count+' '+click_count);
    }
});

例如,将测试放在事件处理程序代码中。


旁注:if块上的花括号末尾不需要分号,例如:

    if (...) {
    };
//   ^--- no semi here

附注2:我在click_count++之后添加了分号。没有它,你就依赖于automatic semicolon insertion的恐怖。你没关系,因为它之后有一个换行符,但总的来说,最好学习分号去哪里的规则,并且总是将它们包括在需要它们的地方。

答案 1 :(得分:0)

您的情况需要在事件处理程序中:

var click_count = 1;

$("#down_arrow").click(function(){
  if ( click_count < limit_count ){
    click_count++;
    var css_position = -1*click_count*300;
    $('#gallery_scroller img').css('top', css_position);
    alert(css_position+' '+limit_count+' '+click_count);
  };
});

答案 2 :(得分:0)

$("#down_arrow").click(function(){
 if ( limit_count > click_count){
    click_count++
    var css_position = -1*click_count*300;
    $('#gallery_scroller img').css('top', css_position);
    alert(css_position+' '+limit_count+' '+click_count);
  };
});