Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 08.09.2020, 11:13
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 651

На всякий случай выложу ссылку

https://rakipov.ru/test/

там одна станица и переключение работает только смена фона
Ответить с цитированием
  #32 (permalink)  
Старый 08.09.2020, 11:53
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 651

Вот я что то подобное что мне нужно сделал, в песочности

const body = document.querySelector("body");
const knopka_1 = document.querySelector(".knopka_1");
const knopka_2 = document.querySelector(".knopka_2");

let fun_knopka_1 = () => {
	body.classList.add("belyi_fon");
	body.classList.remove("chernyi_fon");

	localStorage.setItem("belyi_fon", "belyi_fon");
	localStorage.removeItem("chernyi_fon");
}
knopka_1.addEventListener("click", fun_knopka_1);

let fun_knopka_2 = () => {
	body.classList.remove("belyi_fon");
	body.classList.add("chernyi_fon");

	localStorage.setItem("chernyi_fon", "chernyi_fon");
	localStorage.removeItem("belyi_fon");
}
knopka_2.addEventListener("click", fun_knopka_2);

let fun_1 = () => {
	if (localStorage.getItem("chernyi_fon")!==null){
		body.className = "chernyi_fon";
	}
}
window.addEventListener("load", fun_1);


let fun_2 = () => {
	if (localStorage.getItem("belyi_fon")!==null){
		body.className = "belyi_fon";
	}
}
window.addEventListener("load", fun_2);


Но понимаю что это не самое лучше решение.
Ответить с цитированием
  #33 (permalink)  
Старый 08.09.2020, 12:34
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сергей Ракипов,
А что мой вариант не работает или вы любите посложнее? className и classList это не одно и тоже.
Ответить с цитированием
  #34 (permalink)  
Старый 08.09.2020, 13:09
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 651

Rise,
У меня почему то не получилось его адаптировать

Мне любой вариант подойдет главное что бы был мне понятен и я смог его вживить в свой проект.

Последний раз редактировалось Сергей Ракипов, 08.09.2020 в 13:11.
Ответить с цитированием
  #35 (permalink)  
Старый 08.09.2020, 13:28
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 651

Вот уже тут не работает

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
body{
	font-family: Verdana, Geneva CY, Helvetica, DejaVu Sans, Arial, sans-serif;
	font-size: .8rem;
	line-height: 160%;
}
.main{
	max-width: 480px;
	margin: 0 auto;
}

.knopka_1 {
	height: 24px;
	width: 24px;
	display: inline-flex;
	justify-content: center;
	align-items: center;
	background-color: #fff;
	color: #000;
	padding: 5px;
	border: 1px solid #8b00ff;
	cursor: pointer;
}
.knopka_1:hover {
	background-color: #8b00ff;
	color: #fff;
	padding: 5px;
	border: 1px solid #000;
}
.knopka_2 {
	height: 24px;
	width: 24px;
	display: inline-flex;;
	justify-content: center;
	align-items: center;
	background-color: #000;
	color: #fff;
	padding: 5px;
	border: 1px solid #8b00ff;
	cursor: pointer;
}
.knopka_2:hover {
	background-color: #8b00ff;
	color: #fff;
	padding: 5px;
	border: 1px solid #000;
}
.knopka_3 {
	height: 24px;
	width: 24px;
	display: inline-flex;
	justify-content: center;
	align-items: center;
	background-color: #fff;
	color: #000;
	padding: 5px;
	border: 1px solid #8b00ff;
	cursor: pointer;
}
.knopka_3:hover {
	background-color: #8b00ff;
	color: #fff;
	padding: 5px;
	border: 1px solid #000;
}
.knopka_4 {
	height: 24px;
	width: 24px;
	display: inline-flex;
	justify-content: center;
	align-items: center;
	background-color: #fff;
	color: #000;
	padding: 5px;
	border: 1px solid #8b00ff;
	cursor: pointer;
}
.knopka_4:hover {
	background-color: #8b00ff;
	color: #fff;
	padding: 5px;
	border: 1px solid #000;
}
.belyi_fon{
	background-color: #fff;
	color: #000;
}
.chernyi_fon{
	background-color: #000;
	color: #fff;
}
.osnovnoi_razmer{
	font-size: .8rem;
}
.uvelichenyi_razmer{
	font-size: 1.6rem;
}
    </style>
</head>
<body>
    <div class="main">
        <div class="knopka_1"><div class="blok">А</div></div> 
        <div class="knopka_2"><div class="blok">А</div></div>
        <div class="knopka_3"><div class="blok">1</div></div>
        <div class="knopka_4"><div class="blok">2</div></div>
        <br><br>
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Laudantium corrupti ipsa quis deserunt aperiam similique, excepturi assumenda iste autem, impedit vitae iure officia voluptatem nulla quas repudiandae quaerat, magnam explicabo vero atque. Dicta dolores, nesciunt neque optio maxime officiis quisquam assumenda placeat. Placeat praesentium, eius expedita iusto natus, asperiores quaerat magni molestiae ad ipsum quia aut cupiditate officiis dicta ducimus assumenda aliquam optio quos quas eveniet nesciunt unde deserunt. Dolorem ducimus reprehenderit voluptatem ea saepe animi rerum quos aspernatur illum! Officiis praesentium incidunt nesciunt quas exercitationem fugiat ratione minus aut at obcaecati vitae magnam in ad facere alias, quibusdam adipisci soluta pariatur! Libero eaque reprehenderit ex molestiae, dicta doloremque tempore delectus, cupiditate nam officia amet error itaque asperiores quis est dolorum fugiat, ea nostrum vel voluptatem? Laborum, perferendis molestias minima iusto culpa obcaecati dolores sint soluta, facilis, officia iure! Odit laudantium corporis incidunt ullam eius similique ab earum quae temporibus quo, voluptatum, excepturi rerum saepe exercitationem? Odio omnis, laboriosam illum reiciendis similique beatae iusto amet voluptate architecto possimus reprehenderit, qui molestiae est excepturi magni accusamus voluptates vitae eveniet. Odio dolorem, facilis magni beatae a eius optio aspernatur libero ipsum ad sint, ratione eveniet! Quasi expedita minus, dolore commodi repellat itaque quae ipsam laudantium qui fugiat quis ad! Expedita odio accusamus architecto quo at fugit veniam quibusdam quis debitis reiciendis, tempora sapiente exercitationem ipsam rerum, ratione aperiam recusandae vero, officiis quaerat quia aspernatur nemo soluta laudantium. Amet voluptate nihil deleniti dolor? Aliquid esse id quod est ipsum facilis, incidunt sunt. Dolorem laborum tenetur neque corrupti sequi reprehenderit alias odit dolores enim. Quae dolorem distinctio rem explicabo esse mollitia laborum error, veritatis pariatur cumque cum alias ipsam earum? Eveniet asperiores quas quaerat quia sint dolore, at ipsa nobis velit provident ab hic aliquam autem ex modi? Cumque illo repellendus provident veritatis beatae.
        </div>
<script>
const body = document.querySelector("body");
const knopka_1 = document.querySelector(".knopka_1");
const knopka_2 = document.querySelector(".knopka_2");
const knopka_3 = document.querySelector(".knopka_3");
const knopka_4 = document.querySelector(".knopka_4");

let fun_knopka_1 = () => {
	body.classList.add("belyi_fon");
	body.classList.remove("chernyi_fon");

	localStorage.setItem("belyi_fon", "belyi_fon");
	localStorage.removeItem("chernyi_fon");
}
knopka_1.addEventListener("click", fun_knopka_1);

let fun_1 = () => {
	if (localStorage.getItem("belyi_fon")!==null){
		body.className = "belyi_fon";
	}
}
window.addEventListener("load", fun_1);

let fun_knopka_2 = () => {
	body.classList.remove("belyi_fon");
	body.classList.add("chernyi_fon");

	localStorage.setItem("chernyi_fon", "chernyi_fon");
	localStorage.removeItem("belyi_fon");
}
knopka_2.addEventListener("click", fun_knopka_2);

let fun_2 = () => {
	if (localStorage.getItem("chernyi_fon")!==null){
		body.className = "chernyi_fon";
	}
}
window.addEventListener("load", fun_2);

let fun_knopka_3 = () => {
	body.classList.add("osnovnoi_razmer");
	body.classList.remove("uvelichenyi_razmer");

	localStorage.setItem("osnovnoi_razmer", "osnovnoi_razmer");
	localStorage.removeItem("uvelichenyi_razmer");
}
knopka_3.addEventListener("click", fun_knopka_3);

let fun_3 = () => {
	if (localStorage.getItem("osnovnoi_razmer")!==null){
		body.className = "osnovnoi_razmer";
	}
}
window.addEventListener("load", fun_3);

let fun_knopka_4 = () => {
	body.classList.add("uvelichenyi_razmer");
	body.classList.remove("osnovnoi_razmer");

	localStorage.setItem("uvelichenyi_razmer", "uvelichenyi_razmer");
	localStorage.removeItem("osnovnoi_razmer");
}
knopka_4.addEventListener("click", fun_knopka_4);

let fun_4 = () => {
	if (localStorage.getItem("uvelichenyi_razmer")!==null){
		body.className = "uvelichenyi_razmer";
	}
}
window.addEventListener("load", fun_4);
</script>
</body>
</html>


Он почему то применяйт только одно значение

Последний раз редактировалось Сергей Ракипов, 08.09.2020 в 13:33.
Ответить с цитированием
  #36 (permalink)  
Старый 08.09.2020, 14:39
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 651

По другому сделал и заработало, я стал править сам стиль а не стили.

И не понимаю как лучше сделать

const body = document.querySelector("body");
const knopka_1 = document.querySelector(".knopka_1");
const knopka_2 = document.querySelector(".knopka_2");
const knopka_3 = document.querySelector(".knopka_3");
const knopka_4 = document.querySelector(".knopka_4");




let fun_knopka_1 = () => {
	body.style.backgroundColor = "#fff";
	body.style.color = "#000";

	localStorage.setItem("belyi_fon", "#fff");
	localStorage.removeItem("chernyi_fon");
}
knopka_1.addEventListener("click", fun_knopka_1);

let fun_1 = () => {
	if (localStorage.getItem("belyi_fon")!==null){
		body.style.backgroundColor = "#fff";
		body.style.color = "#000";
	}
}
window.addEventListener("load", fun_1);

let fun_knopka_2 = () => {
	body.style.backgroundColor = "#000";
	body.style.color = "#fff";

	localStorage.setItem("chernyi_fon", "#000");
	localStorage.removeItem("belyi_fon");
}
knopka_2.addEventListener("click", fun_knopka_2);

let fun_2 = () => {
	if (localStorage.getItem("chernyi_fon")!==null){
		body.style.backgroundColor = "#000";
		body.style.color = "#fff";
	}
}
window.addEventListener("load", fun_2);

let fun_knopka_3 = () => {
	body.style.fontSize = "0.8rem";

	localStorage.setItem("osnovnoi_razmer", ".8rem");
	localStorage.removeItem("uvelichenyi_razmer");
}
knopka_3.addEventListener("click", fun_knopka_3);

let fun_3 = () => {
	if (localStorage.getItem("osnovnoi_razmer")!==null){
		body.style.fontSize = "0.8rem";
	}
}
window.addEventListener("load", fun_3);

let fun_knopka_4 = () => {
	
	body.style.fontSize = "1.6rem";

	localStorage.setItem("uvelichenyi_razmer", "uvelichenyi_razmer");
	localStorage.removeItem("osnovnoi_razmer");
}
knopka_4.addEventListener("click", fun_knopka_4);

let fun_4 = () => {
	if (localStorage.getItem("uvelichenyi_razmer")!==null){
		body.style.fontSize = "1.6rem";
	}
}
window.addEventListener("load", fun_4);
Ответить с цитированием
  #37 (permalink)  
Старый 29.12.2020, 05:00
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 651

Не понимаю где допускаю ошибку.
Должно быть кликнул по первой кнопки, появилась вторая, если кнопки уже были нажаты ранее они не появляются.
У меня почему то можно нажать только одну кнопку и последовательность сбита.

<style>
.polzovatelskoe_soglashenie_i_nastroiki_vida_obertka {
    width: 100%;
    height: auto;
    background-color: #3866F3;
    color: #fff;
    position: fixed;
    top: 0px;
    left: 0px;
    right: 0px;
}
.polzovatelskoe_soglashenie_i_nastroiki_vida_obertka  a{
    color: #fff;
}
.polzovatelskoe_soglashenie_i_nastroiki_vida_obertka  a:hover{
    text-decoration: none;
}
.polzovatelskoe_soglashenie_obertka{
    position: absolute;
    top: 0px;
    left: 0px;
    right: 0px;
    width: 100%;
    height: auto;
    background-color: #3866F3;
    z-index: 10;
    display: none;
}
.polzovatelskoe_soglashenie_blok {
    max-width: 960px;
    margin: 0 auto;
    padding: 20px 0px 0px 0px;
    display: grid;
    grid-template-columns: 320px 320px;
    grid-template-rows: 1fr 1fr 1fr;
    grid-template-areas: 
        "polzovatelskoe_soglashenie_tekst polzovatelskoe_soglashenie_tekst"
        "polzovatelskoe_soglashenie_oznakomitsa knopka_ptinyat_polzovatelskoe_soglashenie_blok"
        "nomer_polzovatelskoe_soglashenie nomer_polzovatelskoe_soglashenie";
    justify-content: center;
    align-items: center;
    background-color: #3866F3;
    color: #fff;
}
.polzovatelskoe_soglashenie_tekst {
    grid-area: polzovatelskoe_soglashenie_tekst;

}
.polzovatelskoe_soglashenie_oznakomitsa {
    grid-area: polzovatelskoe_soglashenie_oznakomitsa;
}
.knopka_ptinyat_polzovatelskoe_soglashenie_blok {
    grid-area: knopka_ptinyat_polzovatelskoe_soglashenie_blok;
}
.nomer_polzovatelskoe_soglashenie {
    grid-area: nomer_polzovatelskoe_soglashenie;
    display: flex;
    justify-content: center;
    align-items: center;
}
.knopka_ptinyat_polzovatelskoe_soglashenie {
    width: 280px;
    height: 80px;
    background-color: #4369DF;
    border: 4px solid #2249C7;
    display: flex;
    justify-content: center;
    align-items: center;
    cursor: pointer;
}
.knopka_ptinyat_polzovatelskoe_soglashenie:hover {
    background-color: #395BBF;
}
.nastroiki_vida_obertka{
    position: absolute;
    top: 0px;
    left: 0px;
    right: 0px;
    width: 100%;
    height: auto;
    background-color: #3866F3;
    display: none;
}
.nastroiki_vida_blok {
    max-width: 960px;
    margin: 0px auto 0px;
    padding: 20px 0px 0px 0px;
    display: grid;
    grid-template-columns: 320px 320px;
    grid-template-rows: 1fr 1fr 1fr;
    grid-template-areas: 
        "nastroiki_vida_blok_tekst nastroiki_vida_blok_tekst"
        "ponyal_pereti_nastroiki_vida knopka_ponyal_blok"
        "nomer_nastroiki_vida nomer_nastroiki_vida";
    justify-content: center;
    align-items: center;
    background-color: #3866F3;
    color: #fff;
}
.nastroiki_vida_blok_tekst {
    grid-area: nastroiki_vida_blok_tekst;
}
.ponyal_pereti_nastroiki_vida {
    grid-area: ponyal_pereti_nastroiki_vida;
}
.knopka_ponyal_blok {
    grid-area: knopka_ponyal_blok;
}
.knopka_ponyal{
    width: 280px;
    height: 80px;
    background-color: #4369DF;
    border: 4px solid #2249C7;
    display: flex;
    justify-content: center;
    align-items: center;
    cursor: pointer;
}
.knopka_ponyal:hover{
    background-color: #395BBF;
}
.nomer_nastroiki_vida {
    grid-area: nomer_nastroiki_vida;
    display: flex;
    justify-content: center;
    align-items: center
}
.knopka_ponyal {

}
.nomer_liniya {
    width: 40%;
    height: 1px;
    margin: 0 auto;
    background-color:#fff;
}
.nomer {

}
.shrift_belyi_32 {
    font-size: 32px;
}
.polzovatelskoe_soglashenie_obertka.prinyat{
    display: block;
}
.nastroiki_vida_obertka.prinyat{
    display: block;
}
</style>
<div class="polzovatelskoe_soglashenie_i_nastroiki_vida_obertka">
	<div class="polzovatelskoe_soglashenie_obertka">
		<div class="polzovatelskoe_soglashenie_blok">
				<div class="polzovatelskoe_soglashenie_tekst">
					Мы просим вас принять пользовательское соглашение сайта.
				</div>
				<div class="polzovatelskoe_soglashenie_oznakomitsa">
					<a href="#">Ознакомиться</a>
				</div>
				<div class="knopka_ptinyat_polzovatelskoe_soglashenie_blok">
					<div class="knopka_ptinyat_polzovatelskoe_soglashenie">
						Принимаю
					</div>
				</div>
				<div class="nomer_polzovatelskoe_soglashenie">
					<div class="nomer_liniya"></div>
					<div class="nomer">
						1/2
					</div>
					<div class="nomer_liniya"></div>
				</div>
		</div>
	</div>
	<div class="nastroiki_vida_obertka">
		<div class="nastroiki_vida_blok">
			<div class="nastroiki_vida_blok_tekst">
				Хотим обратить ваше внимание, <span class="shrift_belyi_32">настройка внешнего вида сайта</span> для людей со слабым зрением находится в самом низу сайта
			</div>
			<div class="ponyal_pereti_nastroiki_vida">
				<a href="#">ПОНЯЛ/А, перейти к настройке</a>
			</div>
			<div class="knopka_ponyal_blok">
				<div class="knopka_ponyal">
					ПОНЯЛ/А
				</div>
			</div>
			<div class="nomer_nastroiki_vida">
				<div class="nomer_liniya"></div>
				<div class="nomer">
					2/2
				</div>
				<div class="nomer_liniya"></div>
			</div>
		</div>
	</div>
</div>

<script>
let polzovatelskoe_soglashenie_obertka = document.querySelector(".polzovatelskoe_soglashenie_obertka");
let knopka_ptinyat_polzovatelskoe_soglashenie = document.querySelector(".knopka_ptinyat_polzovatelskoe_soglashenie");
let nastroiki_vida_obertka = document.querySelector(".nastroiki_vida_obertka");
let knopka_ponyal = document.querySelector(".knopka_ponyal");


window.onload = function(){

    if (!localStorage.getItem("skryt_1")){
        polzovatelskoe_soglashenie_obertka.classList.add("prinyat");
        knopka_ptinyat_polzovatelskoe_soglashenie.onclick = function() {
        polzovatelskoe_soglashenie_obertka.classList.remove("prinyat");
        localStorage.setItem("skryt_1", "none")
        }
    }
}

function prinyal_1(){
	polzovatelskoe_soglashenie_obertka.style.display = "none";
	localStorage.setItem("skryt_1","none");
}
knopka_ptinyat_polzovatelskoe_soglashenie.onclick = prinyal_1;


window.onload = function(){

    if (!localStorage.getItem("skryt_2")){
        nastroiki_vida_obertka.classList.add("prinyat");
        knopka_ponyal.onclick = function() {
            nastroiki_vida_obertka.classList.remove("prinyat");
        localStorage.setItem("skryt_2", "none")
        }
    }
}

function prinyal_2(){
	nastroiki_vida_obertka.style.display = "none";
	localStorage.setItem("skryt_2","none");
}
knopka_ponyal.onclick = prinyal_2;
</script>
Ответить с цитированием
  #38 (permalink)  
Старый 29.12.2020, 07:05
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,712

Почему два раза
window.onload = function(){
?

Второе отменяет первое.
Ответить с цитированием
  #39 (permalink)  
Старый 29.12.2020, 07:25
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 651

Сообщение от voraa Посмотреть сообщение
Почему два раза
window.onload = function(){
?

Второе отменяет первое.
Понял, не знал.
А как тогда записать условия после if
Ответить с цитированием
  #40 (permalink)  
Старый 29.12.2020, 11:01
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сергей Ракипов,
не только это, но и prinyal_1(), и prinyal_2() тоже близнецы.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите разобраться с this uroboros7 jQuery 4 02.01.2015 00:56
Помогите разобраться с калькулятором Maksim858 Ваши сайты и скрипты 1 27.12.2014 13:23
Помогите пожалуйста разобраться Kupu4 Ваши сайты и скрипты 0 21.01.2010 10:44
Помогите разобраться с галереей IMAGIN yana_studio Общие вопросы Javascript 4 12.12.2009 17:24
Помогите разобраться с логикой поведения скрипта MarkupDeveloper jQuery 3 21.06.2008 18:04