Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.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本地存储返回1?_Javascript_Html - Fatal编程技术网

JavaScript本地存储返回1?

JavaScript本地存储返回1?,javascript,html,Javascript,Html,虽然在阅读localStorage的文档时,我一直在尝试编写这段简单的代码。我不太明白它为什么返回1。下面的代码只是HTML文件的一部分。例如,如果我们选择max成人值6的id。它将返回1。我的原始HTML有问题吗?这应该可以正常工作,还是我遗漏了什么 第一个HTML <select id="maxAdult"> <option value="1">1</option> <option value="2">2</option&

虽然在阅读localStorage的文档时,我一直在尝试编写这段简单的代码。我不太明白它为什么返回1。下面的代码只是HTML文件的一部分。例如,如果我们选择max成人值6的id。它将返回1。我的原始HTML有问题吗?这应该可以正常工作,还是我遗漏了什么

第一个HTML

<select id="maxAdult">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
</select>

<select id="maxChild">
    <option value="0">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
</select>

<script>
  var store = document.getElementById("maxAdult");
  var value = store.value;
  localStorage.setItem("max", value);
</script>
<script>
  var passen = localStorage.max;
  document.write("<br><strong style='font-size: 16px'>Number of Passengers: 
  </strong><br>");
  document.write(passen);
</script>

正如@charlietfl在评论中所说的,您实际上必须倾听
更改
事件,以便在
元素值更新时更新本地存储,即:

var store = document.getElementById("maxAdult");

// Listen to onchange
store.addEventListener('change', function() {
    localStorage.setItem("max", this.value);
});

这是因为JS本质上不是反应性的,
store
的值不会自动更新其在localStorage中的对应项。

就像@charlietfl在评论中所说的那样,在更新
元素值时,您实际上必须侦听
更改
事件才能更新本地存储,即:

var store = document.getElementById("maxAdult");

// Listen to onchange
store.addEventListener('change', function() {
    localStorage.setItem("max", this.value);
});

这是因为JS本质上不是反应性的,
store
的值不会自动更新其在localStorage中的对应项。

localStorage没有问题,但您需要为值更改时编写事件处理程序。目前,当页面加载时,代码只运行一次。下面是一个使用


1.
2.
3.
4.
5.
6.
7.
8.
9
0
1.
2.
3.
4.
5.
6.
7.
8.
9
var store=document.getElementById(“max成人”);
addEventListener(“change”,function()){
console.log(this.value);
});

本地存储没有问题,但需要为值更改时编写事件处理程序。目前,当页面加载时,代码只运行一次。下面是一个使用


1.
2.
3.
4.
5.
6.
7.
8.
9
0
1.
2.
3.
4.
5.
6.
7.
8.
9
var store=document.getElementById(“max成人”);
addEventListener(“change”,function()){
console.log(this.value);
});

因为您只在页面加载时设置,而不是在“选择”更改时设置。您在页面加载时存储值,所以您应该在他们做出选择后存储值。我认为您需要等待localStorage准备就绪。您需要使用
onchange
事件并设置localStorage的值everytime@MichaelFuller
localStorage
不是异步的,因为您只在页面加载时设置它,而不是在select更改时设置它。您在页面加载时存储值,您应该在他们做出选择后存储该值。我认为您需要等待localStorage准备就绪。您需要使用
onchange
事件并设置localStorage的值everytime@MichaelFuller
localStorage
不是异步的