Почему следующая функция javascript всегда возвращает true? - PullRequest
0 голосов
/ 09 января 2012

У меня есть следующая функция, она всегда будет возвращать True. Есть идеи почему и как этого избежать? Спасибо, ребята.

function validateStatuses(xyx){
var umm = ugh[xyx];
var selects = $('#cont_'+ugh.xyz+' .status_select');
var codes = $('#cont_'+ugh.xyz+' .status_code');
for (var i = 0; i < selects.length; i++) {
    var value = selects[i].options[selects[i].selectedIndex].value;
    if (value == 'new'){
        for (var j = 0; j < codes.length; j++) {
            var blagh = codes[j].options[codes[j].selectedIndex].value;
            if(blagh == 13){
                $('#info_dialog').html('');
                $('#info_dialog').append("<p>You are trying to process a bill ("+bill.name+") with a STATUS of NEW and a STATUS CODE of NONE. Please correct this issue before you proceed!</p><hr />");
                $('#info_dialog').dialog({
                    buttons:{
                        Cancel: function(){
                            $(this).dialog('close');
                        }
                    }
                    });
                billCounterAdd();
                return false;
            }//end if           
        }//end for
    }else{
        return true;  //this is the problem;
    }//end if
}//end for
}//end Function

1 Ответ

3 голосов
/ 09 января 2012

Осмелюсь сказать, что у вас есть хотя бы один выбор, значение которого не 'new'. Поскольку вы выполнили return true; в предложении else, при первом выборе со значением, не равным 'new', функция вернет true.

Похоже, что у него есть ложный маршрут возврата (если в начале есть выборка 'new' и выбор кода со значением 13), но, возможно, этот тестовый пример не подошел в вашем тестировании .

С точки зрения выяснения того, что не так с такими вещами, нет ничего лучше, чем проходить по коду и наблюдать, как он запускается построчно в приличном отладчике. Во всех основных браузерах они встроены сейчас (наконец), так что вы можете точно видеть, что происходит, проверять переменные и т. Д.

...