会话存储的javascript条件无法按预期工作

时间:2015-11-19 10:40:39

标签: javascript jquery html json session-storage

当前正在处理会话存储,其中用户必须从第一页中选择一个单选按钮并单击下一步按钮div必须在第一页的第二页中显示我已经创建了一个具有一组对象的函数,其中数据将是在第二个中使用set item存储我试图使用get item获取这些值。

我有两个场景

  1. 当用户从第一个广播组中选择pg单选按钮时,如果用户选择alain,则选择alain / abudhabi 等任何位置abudhabi从位置从位置然后用户选择DIP EDU如果用户点击提交按钮然后在第二页我需要一个复选框并创建应用程序按钮,其余应该隐藏 - 用我的代码这个正在工作
  2. 如果用户从第一个广播组中选择ug单选按钮,如果用户点击提交按钮,如果有任何位置,如alain / abudhabi,那么在第二页中,我需要获得一个“付费”按钮,但这并不合适帮助我
  3. 这是我的plunker link就像小提琴一样

    这是我从第一页获取项目的代码

    function storedata(){
        var storeDate = {};
        storeDate['storedValue1'] = $('input[id=pg]:checked').val();
        storeDate['storedValue2'] = $('#alain').prop('checked'),$('#abudhabi').prop('checked');
        storeDate['storedValue3'] = $('#slt_mjrpg option:selected').val("Dip - Prof. PG Dip in Teaching");
    
        sessionStorage.setItem('storeDate', JSON.stringify(storeDate));
    
    }
    
    function storedata1(){
        var storeDate1 = {};
        storeDate1['storedValuej'] = $('#slt_mjr option:selected').val("Bachelor of Arts in Persian").text();
        sessionStorage.setItem('storeDate1', JSON.stringify(storeDate1));
        console.log(storeDate1);
    
    }
    

    当我在会话存储中检查时,我将storedValue2视为false

    enter image description here

    提供或在此行之后

    storeDate['storedValue2'] = $('#alain').prop('checked') || $('#abudhabi').prop('checked');
    

    我在storedValue2 = true中变为true,但我的输出没有按预期工作

    enter image description here

    在第二页

    var otherObj = JSON.parse(sessionStorage.getItem('storeDate'));
    var otherObj1 = JSON.parse(sessionStorage.getItem('storeDate1'));
    if (otherObj.storedValue1 && otherObj.storedValue2 && otherObj.storedValue3 != "pg") {
        $(".pay_check,.pay_click").show();
        $(".pay_trans").hide();
    } else if (otherObj1.storedValuej === "BAP") {
        $('.create_btn,.no_applica').show();
        $('.pay_btn').hide();
    } else { * * // I have tried using like this but no use**
        //$('.create_btn,.no_applica,.pay_click').hide();
        $('.pay_btn').show();
    }
    

    任何有关问题的建议人

    请指导我在哪里做错了。提前致谢

2 个答案:

答案 0 :(得分:1)

好的,你这里有很多问题。主要是由于对功能的误解。

首先,我们可以改变

storeDate['storedValue1'] = $('input[id=pg]:checked').val();
// to
storeDate['storedValue1'] = $('#pg').val();

jQuery提供的$函数根据给定的选择器选择元素。因此$('#pg')会选择ID为pg的元素。然后val()返回元素的值。

其次,我们需要改变

storeDate['storedValue2'] = $('#alain').prop('checked'),$('#abudhabi').prop('checked');
// to
storeDate['storedValue2'] = $('#alain').prop('checked') || $('#abudhabi').prop('checked');

你只是误解了布尔运算符。如果a || b true解析为真,则a会解析为b

最后是最糟糕的罪犯

storeDate['storedValue3'] = $('#slt_mjrpg option:selected').val("Dip - Prof. PG Dip in Teaching");
// to
storeDate['storedValue3'] = $('#slt_mjrpg).val();

val返回元素的值。如果是select,它将返回所选选项的值。提供字符串参数将设置该值。所以我们正在做的只是获取价值,我们稍后会检查

在隐藏/显示功能中,我们不需要进行太多改动。我们只是在相等操作中向下移动不合适的val参数以获得布尔值。

if (otherObj.storedValue1 && otherObj.storedValue2 && otherObj.storedValue3 === "Dip - Prof. PG Dip in Teaching")

答案 1 :(得分:-2)

我认为会话存储只能使用一页。

你应该尝试sessionstorage的localstorage instade。

试试这个

function storedata(){
    var storeDate = {};
    storeDate['storedValue1'] = $('input[id=pg]:checked').val();
    storeDate['storedValue2'] = $('input[id=alain]:checked').val();
    storeDate['storedValue3'] = $('#slt_mjrpg option:selected').val("Dip - Prof. PG Dip in Teaching");

    localStorage.setItem('storeDate', JSON.stringify(storeDate));

}

var otherObj = JSON.parse(localStorage.getItem('storeDate'));         
        var otherObj1 = JSON.parse(sessionStorage.getItem('storeDate1')); 
        if (otherObj.storedValue1 && otherObj.storedValue2 && otherObj.storedValue3 !="pg") {   
            $(".pay_check,.pay_click").show();  
            $(".pay_trans").hide();
        } else if (otherObj1.storedValuej === "BAP"){   
            $('.create_btn,.no_applica').show();
            $('.pay_btn').hide();               
        } else {
**// I have tried using like this but no use**
            //$('.create_btn,.no_applica,.pay_click').hide();
            $('.pay_btn').show();       
        }