Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.06.2020, 22:45
Интересующийся
Отправить личное сообщение для ABitOfJS Посмотреть профиль Найти все сообщения от ABitOfJS
 
Регистрация: 15.05.2020
Сообщений: 16

filter: ...;
Здравствуйте! Совсем недавно услышал о таком css-свойстве - filter. Есть вопрос по моему коду:
<!DOCTYPE html>
<html>
<head>
<style>
#block {
width: 100px;
height: 100px;
border: 1px solid black;
background: green;
}
</style>
<script>
function darktheme() {
document.getElementById(block).style.filter = 'invert(100%)';
}
</script>
</head>
<body>
<div id="block"></div>
<input type="button" id="dark" onclick="darktheme()">
</body>
</html>

Вроде всё написано хорошо, но неужели filter работает только с изображениями? Нету ли альтернативы этому С$$-свойству?
Вопрос второй. Допустим, есть альтернатива filter'y. А как тогда сохранить "фильтрованную" позицию div в localStorage? Там жеж функция, не переменная...
Ответить с цитированием
  #2 (permalink)  
Старый 12.06.2020, 07:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

ABitOfJS,
в строке 14 пропущены важные символы!!!
Ответить с цитированием
  #3 (permalink)  
Старый 12.06.2020, 08:08
Интересующийся
Отправить личное сообщение для ABitOfJS Посмотреть профиль Найти все сообщения от ABitOfJS
 
Регистрация: 15.05.2020
Сообщений: 16

' '
Ответить с цитированием
  #4 (permalink)  
Старый 12.06.2020, 10:19
Интересующийся
Отправить личное сообщение для ABitOfJS Посмотреть профиль Найти все сообщения от ABitOfJS
 
Регистрация: 15.05.2020
Сообщений: 16

В общем, код я исправил:
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<style>
.block {
width: 100px;
height: 100px;
border: 1px solid black;
background: white;
color: #292929;
}
</style>
<script>
function darktheme() {
$('.block').css({'background': 'white',
                 'color': '#292929'});
}
function lighttheme() {
$('.block').css({'background': '#292929',
                 'color': 'white'});
}
</script>
</head>
<body>
<div class="block">текст</div>
<div class="block">текст</div>
<div class="block">текст</div>
<input type="button" onclick="darktheme()">
<input type="button" onclick="lighttheme()">
</body>
</html>

Но проблема осталась с localStorage. Несколько раз перечитав статью на learn.javascript.ru всё равно не придумал способ обернуть функцию. Вернее придумал, но там функция относится к 1 единому div'y с уникальным id:
if (localStorage.color) {
    document.getElementById('block').style.backgroundColor = localStorage.color
}
function darktheme() {
    var m = document.getElementById('block');
    m.style.background = "#292929";
    if (localStorage.color == undefined) {
        localStorage.setItem('color', '#292929')
    } else {
        localStorage.color = "#292929"
    }
}
function lighttheme() {
    var m = document.getElementById('block');
    m.style.background = "white";
    if (localStorage.color == undefined) {
        localStorage.setItem('color', 'white')
    } else {
        localStorage.color = "white"
    }
}

А в моём новом варианте несколько div с одним и тем же класом. Как быть с этим?
Ответить с цитированием
  #5 (permalink)  
Старый 12.06.2020, 11:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

ABitOfJS,
<!DOCTYPE html>
<html>
<head>
<style>
.block {
width: 100px;
height: 100px;
border: 1px solid black;
background-color: white;
color: #292929;
}
.block.dark {
background-color: #292929;
color: white;
}

</style>
<script>
function setTheme(toggle) {
document.querySelectorAll('.block').forEach(elem => elem.classList.toggle('dark', toggle))
localStorage.toggle = toggle;
}
</script>
</head>
<body>
<div class="block">текст</div>
<div class="block">текст</div>
<div class="block">текст</div>
<input type="button" onclick="setTheme(false)" value="light">
<input type="button" onclick="setTheme(true)" value="dark">
<script>
setTheme(localStorage.toggle == 'true')
</script>
</body>
</html>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по свойству filter:; Black_Star (X)HTML/CSS 7 12.12.2016 18:38
filter() и input innowed Events/DOM/Window 7 04.05.2016 20:13
Фильтры в гриде AlexTIX ExtJS 4 15.01.2014 17:25
не подключается filter в ie 6-7 shtopor Internet Explorer 4 23.03.2013 20:58
какое отличие между filter и is Arkinsstoun jQuery 5 19.01.2012 22:18