#javascript #html
#javascript #HTML
Вопрос:
Я хочу добавить класс в body в HTML с помощью Javascript с помощью кнопки, которая выполняет функцию, а затем удалить ее с помощью другой кнопки. Но я хочу сохранить этот класс, пока не будет нажата другая кнопка, используя localStorage. Я могу сделать это без localStorage
$('body').addClass('Class here');
Но как с localStorage?
Ответ №1:
Используя Storage.setItem
для сохранения, затем Storage.getItem
для извлечения, например:
var className = "theclass";
// Put the class name into storage
localStorage.setItem('className', className);
// Retrieve the class name from storage
var retrievedClassName = localStorage.getItem('className');
$('body').addClass(retrievedClassName);
Комментарии:
1. Что я вкладываю в обе функции?
2. setItem(ключ, значение), GetItem(ключ)
Ответ №2:
Вот рабочий код с jquery:
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-3.1.1.min.js"></script>
</head>
<body class="">
<div class="form-group">
<button class="button">your button</button>
</div>
<script>
var className = "theclass";
jQuery('.button').on( 'click', function(){
localStorage.setItem('className', className);
jQuery('body').addClass(className);
});
// Retrieve the class name from storage
var retrievedClassName = localStorage.getItem('className');
jQuery('body').addClass(retrievedClassName);
</script>
</body>
</html>
И здесь без:
<html>
<head></head>
<body id="mybigbody" class="">
<div class="form-group">
<button id="button">your button</button>
</div>
<script>
var className = "theclass";
var body = document.getElementById("mybigbody");
document.getElementById('button').onclick = function(e) {
localStorage.setItem('className', className);
body.setAttribute("class", className);
e.stopPropagation();
}
// Retrieve the class name from storage
var retrievedClassName = localStorage.getItem('className');
if(retrievedClassName)
body.setAttribute("class", retrievedClassName);
</script>
</body>
</html>
Комментарии:
1. Я не использую Jquery
2. @jekeajames Итак, скажите мне, что такое $$? Я подумал, что это опечатка jquery.
3. В любом случае проблема та же. Внутри вашего события click вы можете установить classname в вашем localstorage и в вашем теле. И снаружи, при запуске вы должны повторно создать свой класс с помощью GetItem и прикрепить его к телу.
4. Как, добавив GetItem в тело? Извините, но я новичок в JS
5. @jekeajames с
var retrievedClassName = localStorage.getItem('className');
помощью вы можете получить из своего локального хранилища класс, который вы сохранили с помощью click в какой-то предыдущий момент. Итак, в полученном className у вас есть имя вашего класса. Теперь вы должны прикрепить его к своему телу. С помощью javascript без библиотеки andy вы можете сделатьvar body = document.getElementById("body"); body.setAttribute("class", retrievedClassName);