我正在尝试创建一个带有位置选项的弹出模式,该选项会根据用户的选择进行重定向。我正在尝试将所选的URL作为首选项存储在localstorage内,以便用户只需要选择一次位置,而不必每次访问该网站时都弹出窗口。
每次在浏览器中测试该重定向时,都会发生重定向,但是当我输入console.log以打印出localStorage值时,它会返回null
,但在控制台中没有出现任何错误,因此我没有还有很多事情要做。
下面是我的代码,并且包含了JS Fiddle here的链接,非常感谢您的帮助!
<div class="modal-body">
<form name="siteSelector">
<select onchange="save(); go()" id="site" name="site" SIZE="1" class="form-control form-control-lg">
<option value="non-value">Choose Site</option>
<option value="https://www.google.com">Google</option>
<option value="https://www.amazon.com/">Amazon</option>
<option value="https://www.guitarcenter.com/">Guitar Center</option>
</select>
<script>
function save(){
document.getElementsByName("site").onchange = function(){
localStorage.setItem('site', document.getElementsByName("site"));
}
if (localStorage.getItem('site')) {
document.getElementsByName("site").options[localStorage.getItem('site')].selected = true;
}
}
function go(){
location = document.siteSelector.site.options[document.siteSelector.site.selectedIndex].value
}
</script>
</form>
</div>
答案 0 :(得分:1)
您正试图将文档元素存储为localStorage项。您可以存储所选选项或URL的索引。
在示例document.getElementsByName
中返回NodeList-而不是单个元素。您的保存功能如下所示:
function save () {
let element = document.getElementById("site");
if (!element.selectedIndex)
return; // you can display error if that happens.
localStorage.setItem('site', element.selectedIndex);
}