JavaScript, если оператор не работает правильно - PullRequest
0 голосов
/ 13 февраля 2012
  //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 ]

3 голосов
/ 13 февраля 2012

Ваш оператор 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++.Без этого вы полагаетесь на ужас автоматической вставки точек с запятой .Вы были в порядке, потому что после этого произошел разрыв строки, но, в общем, лучше узнать правила, по которым идут точки с запятой, и всегда включать их там, где они необходимы.

0 голосов
/ 13 февраля 2012
$("#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);
  };
});
0 голосов
/ 13 февраля 2012

ваше условие должно быть внутри обработчика события:

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);
  };
});
...