if / else语句:搜索多个可能的值只查找最后一个值(javascript)

时间:2015-05-29 14:52:37

标签: javascript jquery if-statement

我有一个包含各种输入的表单来搜索地址。加载页面时只会显示省和邮政编码,但可以选择打开切换按钮以显示更多选项,例如街道名称等。基本上,我想要实现的是切换保留如果选择和文本输入不为空(''和0),则在页面再次加载时打开。

我有大部分逻辑,但我的问题是我的if / else语句只查看它获得的最后一个值。

var allInputsValue;
var allInputs; //for testing purposes

$('.address-options').each(
    function(){
        allInputs = $(this); //for testing purposes
        allInputsValue = $(this).val();
        //console.log('Type: ' + allInputs.attr('type') + ' Name: ' + allInputs.attr('name') + ' Value: ' + allInputs.val());
        //console.log(' ID: ' + allInputs.attr('id') + '\n' + ' Value: ' + allInputs.val());
        console.log('Value: ' + allInputsValue);
    }
);

//if($('#civicNo').val() == '', $('#streetName').val() == ''){
if(allInputsValue === '' || allInputsValue === 0){
    alert("Empty fields");
    if (localStorage) {
        localStorage.setItem('addressOptions', 'closed');
    }
    togglePane("closed");
}else{
    alert("Fields not empty");

    if (localStorage) {
        localStorage.setItem('addressOptions', 'open');
    }
    togglePane("open");
}

我试图保持代码相当干净,而不必为每个输入ID执行其他操作。

在控制台日志中,我找回了我正在寻找的所有正确值。我错过了什么?

2 个答案:

答案 0 :(得分:2)

您需要将if-else放在.each

var allInputsValue;
    var allInputs; //for testing purposes

    $('.address-options').each(
            function(){
                allInputs = $(this); //for testing purposes
                allInputsValue = $(this).val();
                //console.log('Type: ' + allInputs.attr('type') + ' Name: ' + allInputs.attr('name') + ' Value: ' + allInputs.val());
                //console.log(' ID: ' + allInputs.attr('id') + '\n' + ' Value: ' + allInputs.val());
                console.log('Value: ' + allInputsValue);
//if($('#civicNo').val() == '', $('#streetName').val() == ''){
    if(allInputsValue === '' || allInputsValue === 0){
        alert("Empty fields");
        if (localStorage) {
            localStorage.setItem('addressOptions', 'closed');
        }
        togglePane("closed");
    }else{
        alert("Fields not empty");

        if (localStorage) {
            localStorage.setItem('addressOptions', 'open');
        }
        togglePane("open");
    }
            }
    );

答案 1 :(得分:1)

它可能只是我的眼睛,但看起来你的if / else语句在循环之外。它需要在循环中

    var allInputsValue;
    var allInputs; //for testing purposes

    $('.address-options').each(
        function(){
            allInputs = $(this); //for testing purposes
            allInputsValue = $(this).val();
            //console.log('Type: ' + allInputs.attr('type') + ' Name: ' + allInputs.attr('name') + ' Value: ' + allInputs.val());
            //console.log(' ID: ' + allInputs.attr('id') + '\n' + ' Value: ' + allInputs.val());
            console.log('Value: ' + allInputsValue);
        }
   // ); This needs to be below

    //if($('#civicNo').val() == '', $('#streetName').val() == ''){
    if(allInputsValue === '' || allInputsValue === 0){
        alert("Empty fields");
        if (localStorage) {
            localStorage.setItem('addressOptions', 'closed');
        }
        togglePane("closed");
    }else{
        alert("Fields not empty");

        if (localStorage) {
            localStorage.setItem('addressOptions', 'open');
        }
        togglePane("open");
    }
**);**