Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置和检索本地存储_Javascript - Fatal编程技术网

Javascript 设置和检索本地存储

Javascript 设置和检索本地存储,javascript,Javascript,如果有人接受某项服务,我需要将产品id设置为本地存储,然后如果他们以后再次访问该页面,我需要检索该内容。如果存储的id与当前的报价产品id匹配,则包含报价的div将被隐藏,以便他们不能再次利用它 当他们单击accept按钮时,我必须关闭offer框并将id设置为localstorage的代码是: <script> var accepted = function() { var mydiv = document.getElementById('timed-co

如果有人接受某项服务,我需要将产品id设置为本地存储,然后如果他们以后再次访问该页面,我需要检索该内容。如果存储的id与当前的报价产品id匹配,则包含报价的div将被隐藏,以便他们不能再次利用它

当他们单击accept按钮时,我必须关闭offer框并将id设置为localstorage的代码是:

<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