【问题标题】:Dropdown CSS with local storage带有本地存储的下拉 CSS
【发布时间】:2018-05-23 10:04:49
【问题描述】:

用户可以从下拉列表中选择一个主题,选定的主题将存储在本地存储中。虽然它可以将下拉值保存在本地存储中,但它不会调用样式表。请帮忙,谢谢!

请原谅科学怪人类型的代码。 JS 对我来说是陌生的,我是一名设计师。

<html>
<head>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
    <link href="style1.css" rel="stylesheet" type="text/css" title="s1" id="s1"/>
</head>
<body>

<select id="mySelect" class="test">
    <option value="style1.css">Option A</option>
    <option value="style2.css">Option B</option>
    <option value="style3.css">Option C</option>
</select>


<!--local storage-->
<script>
 $('.test').change(function() {
    localStorage.setItem(this.id, this.value);
}).val(function() {
    return localStorage.getItem(this.id)
});
</script>
<!--dropdown css-->

 <script>
        function setStyleSource (linkID, sourceLoc) {
      var theLink = document.getElementById(linkID);
      theLink.href = sourceLoc;
      console.log(theLink.href);
    }

    document.getElementById("mySelect").addEventListener("change", function(){
        var selected = this.options[this.selectedIndex].value;
        setStyleSource ("s1", selected)
    });
    </script>


</body>
</html>

1.更改css的下拉菜单有效。 2.localstorage 用于所选选项的工作。 但是存储的选定选项实际上并没有显示它自己的 css 表(而是显示默认 css)。

【问题讨论】:

  • 您的 console.log 显示什么?
  • 我认为唯一改变样式表的是下拉列表中的选择,这会改变链接(您可能需要刷新页面?)我可能是错的,但它看起来不像调用存储正在做任何事情。
  • @dgrogan 它显示为空白
  • @wazz 到目前为止,通过更改下拉列表,它无需刷新即可替换样式表。 localstorage 存储下拉选项,因此刷新后选项保持不变。但该选项不会触发样式表的更改。

标签: javascript css drop-down-menu local-storage


【解决方案1】:

使用val() 更改下拉值不会触发change 事件,您必须在设置值后手动触发它:

$('.test').val(localStorage.getItem(this.id)).trigger('change'); // OR .change()

还为change 添加事件侦听器在触发相同:

function setStyleSource(linkID, sourceLoc) {
  var theLink = document.getElementById(linkID);
  theLink.href = sourceLoc;
  console.log(theLink.href);
}

document.getElementById("mySelect").addEventListener("change", function() {
  var selected = this.options[this.selectedIndex].value;
  setStyleSource("s1", selected)
});

$('.test').change(function() {
  localStorage.setItem(this.id, this.value);
}).val(function() {
  return localStorage.getItem(this.id)
}).trigger('change');

【讨论】:

  • 感谢您的建议。我已经添加了您的输入,但似乎不起作用。但我不确定我是否已正确添加它 [链接] (imaginaryzebra.com/feature%20test/…) 最终,我希望页面在刷新页面后显示相应的 css。它目前在刷新页面后显示选定的下拉选项,但它没有使用相应的 css
猜你喜欢
  • 2021-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-07
  • 1970-01-01
  • 2021-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多