javascript - 如何使用下拉菜单更改和保存主体颜色

标签 javascript jquery html css local-storage

我正在尝试使用下拉菜单中提供的选项更改主体颜色并保存这些更改,这样当用户刷新页面时,背景颜色将与他们设置的颜色相同。但是,我在根据下拉菜单选项更改背景颜色时遇到问题。

HTML

<button class="btn-secondmenu">Button</button>

<select name="colors" id="colors">
    <option value="red">Red</option>
    <option value="green" selected="selected">Green</option>
    <option value="yellow">Yellow</option>
    <option value="black">Black</option>
</select>

JS

$(function(){
    var select = document.getElementById("colors");

    select.onchange = function(){
        var selectedColor = select.options[select.selectedIndex].value;
        alert(selectedString);
    }

    if (localStorage.getItem('background') !== null) {
        getColour = localStorage.background;
        $('.bdy').css('background', getColour);
    } else {
        getColour = 'green';
    }

    $('.btn-secondmenu').click(function(){
        if(getColour == 'blue'){
            localStorage.removeItem('background');
            $('.bdy').css('background', 'red');
            localStorage.setItem('background', 'red');
        } else {
            getColour = 'blue';
            localStorage.removeItem('background');
            $('.bdy').css('background', 'blue');
            localStorage.setItem('background', 'blue');
        }
    });
});

如有任何建议,我们将不胜感激,谢谢!

最佳答案

你在这里把事情复杂化了,你可以在下拉列表的 onchange 事件中实现这一点,方法是使用 $(this).val() 获取颜色。

$('select[name="colors"]').change(function() {
  $('.bdy').css('background', $(this).val());
  localStorage.setItem('background', $(this).val());
});

注意:

无需从 localStorage 中删除元素然后重置它,仅使用 .setItem() 如果您选中 Storage.setItem() MDN Reference,它将覆盖元素的值你可以看到:

The setItem() method of the Storage interface, when passed a key name and value, will add that key to the storage, or update that key's value if it already exists.

演示:

$('select[name="colors"]').change(function() {
  $('.bdy').css('background', $(this).val());
  //localStorage.setItem('background', $(this).val());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="bdy">
  <select name="colors" id="colors">
                <option value="red">Red</option>
                <option value="green" selected="selected">Green</option>
                <option value="yellow">Yellow</option>
                <option value="black">Black</option>
  </select>
</div>

关于javascript - 如何使用下拉菜单更改和保存主体颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47456509/

相关文章:

javascript - 我们可以使用 javascript 设置 HTML5 标签的属性,如 target 或 src 吗?

javascript - Couchdb 使用键连接两个文档

jquery - 单击新 div 时切换另一个 div 的类。查询

javascript - 在动画中获取当前的 CSS3 翻译

php - jQuery 自动完成不适用于动态表单字段

html - Win 10 UWP EmailMessage API 是否支持 HTML 正文?

javascript - 如何在用户关闭窗口或选项卡时重定向

javascript - 如何从各种 AJAX 调用中积累数据?

php - 我的 Google map InfoWindow 内的超链接未正确显示

javascript - 调用函数时返回 jquery.deferred 对象的响应