Javascript 设置和检索本地存储
如果有人接受某项服务,我需要将产品id设置为本地存储,然后如果他们以后再次访问该页面,我需要检索该内容。如果存储的id与当前的报价产品id匹配,则包含报价的div将被隐藏,以便他们不能再次利用它 当他们单击accept按钮时,我必须关闭offer框并将id设置为localstorage的代码是:Javascript 设置和检索本地存储,javascript,Javascript,如果有人接受某项服务,我需要将产品id设置为本地存储,然后如果他们以后再次访问该页面,我需要检索该内容。如果存储的id与当前的报价产品id匹配,则包含报价的div将被隐藏,以便他们不能再次利用它 当他们单击accept按钮时,我必须关闭offer框并将id设置为localstorage的代码是: <script> var accepted = function() { var mydiv = document.getElementById('timed-co
<script>
var accepted = function() {
var mydiv = document.getElementById('timed-container');
if (mydiv.style.display === 'block' || mydiv.style.display === '')
mydiv.style.display = 'none';
var timedpid=<?php echo json_encode($_SESSION['time_limited_pid']); ?>;
localStorage.setItem('timedpid', timedpid);
}
}
</script>
var接受=函数(){
var mydiv=document.getElementById('timed-container');
if(mydiv.style.display=='block'| | mydiv.style.display==='')
mydiv.style.display='none';
var timedpid=;
setItem('timedpid',timedpid);
}
}
然后,此代码将根据页面加载时的当前提供id检查localstorage
<script>
if(localStorage.getItem('timedpid')) {
var storedpid = localStorage.getItem('timedpid')
var currentpid=<?php echo json_encode($_SESSION['time_limited_pid']); ?>;
if (currentpid === storepid) {
var mydiv = document.getElementById('timed-container');
mydiv.style.display = 'none';
}
}
</script>
if(localStorage.getItem('timedpid')){
var storedpid=localStorage.getItem('timedpid')
var currentpid=;
如果(当前PID==存储PID){
var mydiv=document.getElementById('timed-container');
mydiv.style.display='none';
}
}
当前产品id存储在$\u SESSION['time\u limited\u pid']中,因此在本测试中它是2092
单击accept时,offer窗口将关闭,但如果我重新加载页面,它将再次显示,因此未设置localstorage,或者在重新加载时未运行正确的比较
我正在寻找一些帮助来解决此问题。您使用的是(=
)运算符,而不是相等(=
)或严格相等(==
)
如果(currentpid=storepid)/在getItem中使用“timepid”,但在“timedpid”中设置了值,请尝试此localStorage.getItem('timedpid')
不确定这是否是错误,但是localStorage.setItem
使用timedpid
和localStorage.getItem
使用timepid
。为什么要使用json\u encode?@anshu,因为你应该这么做?哼!事实上,OP知道使用json_encode
安全地将PHP变量传递到JS环境中,但却在一个简单的=
vs.=
问题上绊倒了……我修复了=vs.==问题,并纠正了timepid和timedpid问题,但它仍然不起作用。这两个都是愚蠢的错误,我真的应该更仔细地检查我的代码!虽然这是一个正确的观点,但是关于打字错误引起的问题应该关闭,而不是回答。你还没有你的关闭投票锤,但是记住当你这样做的时候:用你发现的打字错误评论,关闭投票:)你在第二个脚本中的if
语句仍然使用timepid
而不是timedpid
…发现了那个,不,即使更改了它也不起作用。我已经用实际值替换了json_编码,以确认它不相关,也没有区别。请使用JSFIDLE或与基本代码类似的代码,我来看看。在当前代码中找不到任何其他问题。我在这里做了一个修改,我必须更改隐藏函数的格式,因为它似乎无法处理该修改。这就是说,它现在的样子更干净了。好吧,在你的小提琴中,你正在立即执行你的if
语句,但是当用户点击一个按钮时,你实际上在存储器中存储了一些东西。因此,在检查localStorage时,它还没有存储任何内容。
if (currentpid = storepid) // <-- here you are asigning storepid to currentpid
if(currentpid === storepid) // <-- here you are comparing them
localStorage.setItem('timedpid', timedpid); // <-- here its timedpid
// ...
localStorage.getItem('timepid'); // <-- here its timepid