javascript 会话存储条件未按预期工作
javascript condition for session storage not working as expected
目前正在处理会话存储,用户必须 select 第一页中的一个单选按钮并单击下一步按钮 div 必须在第一页的第二页中显示 我创建了一个具有一组对象的函数,其中数据将在第二个中使用设置项存储,我正在尝试使用获取项获取这些值。
我有两种情况
- 当用户 select 从第一个单选组 pg 单选按钮时,如果有任何位置,如 alain / abudhabi if user select alain | abudhabi 从位置 从位置然后用户选择 DIP EDU 如果用户单击提交按钮然后在第二页我需要一个复选框并创建应用程序按钮其余的应该隐藏 - With我的代码运行正常
- 如果用户 select 来自第一个单选组的 ug 单选按钮,如果用户单击提交按钮,则在任何位置(如 alain / abudhabi),然后在第二页中我需要获得“只是一个付款”按钮 但这不起作用请帮助我
这是我的 plunker link 就像 fiddle
这是我从第一页获取项目的代码
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
提供后或在这一行
storeDate['storedValue2'] = $('#alain').prop('checked') || $('#abudhabi').prop('checked');
我在 storedValue2 = true 中得到 true 但我的输出没有按预期工作
在第二页
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();
}
大家对这个问题有什么建议
请指导我哪里做错了。提前致谢
我认为会话存储仅适用于一页。
您应该尝试 localstorage 而不是 sessionstorage。
试试这个
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();
}
好的,你这里有很多问题。主要是对功能的误解。
首先,我们可以改变
storeDate['storedValue1'] = $('input[id=pg]:checked').val();
// to
storeDate['storedValue1'] = $('#pg').val();
由jQuery selects 元素提供的$
功能基于给定的selector。所以 $('#pg')
select 是 ID 为 pg
的元素。然后val()
returns元素的值。
其次,我们需要改变
storeDate['storedValue2'] = $('#alain').prop('checked'),$('#abudhabi').prop('checked');
// to
storeDate['storedValue2'] = $('#alain').prop('checked') || $('#abudhabi').prop('checked');
你只是误解了这里的布尔运算符。如果 a
或 b
解析为真,a || b
解析为 true
。
最后是最严重的罪犯
storeDate['storedValue3'] = $('#slt_mjrpg option:selected').val("Dip - Prof. PG Dip in Teaching");
// to
storeDate['storedValue3'] = $('#slt_mjrpg).val();
val
returns 元素的值。在 select 的情况下,它将 return selected 选项的值 。提供字符串参数将 设置 值。所以我们所做的只是获取值,我们将在稍后.
检查值
在你的hide/show函数中,我们不需要做太多改动。我们将在相等运算中将不合适的 val
参数移到此处以获得布尔值。
if (otherObj.storedValue1 && otherObj.storedValue2 && otherObj.storedValue3 === "Dip - Prof. PG Dip in Teaching")
目前正在处理会话存储,用户必须 select 第一页中的一个单选按钮并单击下一步按钮 div 必须在第一页的第二页中显示 我创建了一个具有一组对象的函数,其中数据将在第二个中使用设置项存储,我正在尝试使用获取项获取这些值。
我有两种情况
- 当用户 select 从第一个单选组 pg 单选按钮时,如果有任何位置,如 alain / abudhabi if user select alain | abudhabi 从位置 从位置然后用户选择 DIP EDU 如果用户单击提交按钮然后在第二页我需要一个复选框并创建应用程序按钮其余的应该隐藏 - With我的代码运行正常
- 如果用户 select 来自第一个单选组的 ug 单选按钮,如果用户单击提交按钮,则在任何位置(如 alain / abudhabi),然后在第二页中我需要获得“只是一个付款”按钮 但这不起作用请帮助我
这是我的 plunker link 就像 fiddle
这是我从第一页获取项目的代码
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
提供后或在这一行
storeDate['storedValue2'] = $('#alain').prop('checked') || $('#abudhabi').prop('checked');
我在 storedValue2 = true 中得到 true 但我的输出没有按预期工作
在第二页
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();
}
大家对这个问题有什么建议
请指导我哪里做错了。提前致谢
我认为会话存储仅适用于一页。
您应该尝试 localstorage 而不是 sessionstorage。
试试这个
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();
}
好的,你这里有很多问题。主要是对功能的误解。
首先,我们可以改变
storeDate['storedValue1'] = $('input[id=pg]:checked').val();
// to
storeDate['storedValue1'] = $('#pg').val();
由jQuery selects 元素提供的$
功能基于给定的selector。所以 $('#pg')
select 是 ID 为 pg
的元素。然后val()
returns元素的值。
其次,我们需要改变
storeDate['storedValue2'] = $('#alain').prop('checked'),$('#abudhabi').prop('checked');
// to
storeDate['storedValue2'] = $('#alain').prop('checked') || $('#abudhabi').prop('checked');
你只是误解了这里的布尔运算符。如果 a
或 b
解析为真,a || b
解析为 true
。
最后是最严重的罪犯
storeDate['storedValue3'] = $('#slt_mjrpg option:selected').val("Dip - Prof. PG Dip in Teaching");
// to
storeDate['storedValue3'] = $('#slt_mjrpg).val();
val
returns 元素的值。在 select 的情况下,它将 return selected 选项的值 。提供字符串参数将 设置 值。所以我们所做的只是获取值,我们将在稍后.
在你的hide/show函数中,我们不需要做太多改动。我们将在相等运算中将不合适的 val
参数移到此处以获得布尔值。
if (otherObj.storedValue1 && otherObj.storedValue2 && otherObj.storedValue3 === "Dip - Prof. PG Dip in Teaching")