本地存储未存储URL

时间:2018-08-20 17:58:42

标签: javascript local-storage

我正在尝试创建一个带有位置选项的弹出模式,该选项会根据用户的选择进行重定向。我正在尝试将所选的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>

1 个答案:

答案 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);
}