letehaha
@letehaha
Вникаю вo front-end

Почему не срабатывает проверка на пустой массив?

У меня есть вот такой код:
$('.neispravnost').on('click', '.ns-blok', function(){
    // some code...
    goToNextStep ();
}
function goToNextStep (){
  if(MyProblemArray.length != 0 || MySummArray.length != 0)
    $('.step2-oformit').click( function(){
      $('#tochki-step2').addClass('active');
      $('#nav-step3').addClass('active');
      $('#order-main').find('.step-wrap').removeClass('active');
      $('#step3').addClass('active');
    });
}


Суть всего: у меня есть несколько элементов. Если я кликаю на какой-то элемент, он заносится в массив. Хочу сделать проверку на то, пустой ли массив, и если он НЕ пустой, то goToNextStep () срабатывает. Я пробовал делать проверку как внутри функции перехода на следующий шаг, так и в самой функции, где я работаю с массивом:
if(MyProblemArray.length != 0 || MySummArray.length != 0)
  goToNextStep ();


Что я делаю не так?

UPD: пока я не выбирал никаких элементов, проверка работала правильно, т.е. кнопка была недоступна к нажатию. Но если я выбирал какой-то элемент (он заносился в массив), а потом убирал (он удаляется из массива), то потом проверка не работала.

UPD 2: Массивы берутся вот отсюда (код не мой, а знаний мало, потому не знаю есть ли ошибки в коде):
// глобальные переменные
var MySummArray = [],
    MyProblemArray = [],
    novajasumm = 0,
    datazena;
//код в функции
$(this).toggleClass('active');

datazena = $(this).attr('data-zena');
Problem = $(this).find('p').text();

var i = MySummArray.indexOf(Number(datazena));
var p = MyProblemArray.indexOf(Problem);

if (i != -1){
    MySummArray.splice(i, 1);
} else {
    $(this).each(function(i){
    var numberu = $(this).attr('data-zena');
    MySummArray.push(Number(numberu));
    });
}

if (p != -1){
    MyProblemArray.splice(p, 1);
} else {
    $(this).each(function(i){
    var newProblem = $(this).find('p').text();
    MyProblemArray.push(newProblem);
    });
}

console.log(MyProblemArray.join('; '));

var summitog = 0;
if(MySummArray.length != 0){       
MySummArray.forEach(function(item, i, MySummArray) {
summitog += item;
});
} else {
summitog = 0;
}


UPD 3: для наглядности, вот
  • Вопрос задан
  • 301 просмотр
Решения вопроса 1
romy4
@romy4
Exception handler
ну, здесь вообще не ясно откуда берутся ваши массивы
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@GreatRash
Опечатка?

if(MyProblemArray.length != 0 || MySummArray.lenght != 0)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы