Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Замена id элемента по клику кнопки (https://javascript.ru/forum/misc/69524-zamena-id-ehlementa-po-kliku-knopki.html)

zapalych 30.06.2017 13:27

Замена id элемента по клику кнопки
 
Здравствуйте! Подскажите, пожалуйста, в чем ошибка. Делал в однажды для учебного задания коротенький скрипт для смены настроек отображения по клику. Вот понадобилось применить нечто подобное по работе.

Было (и всё работало)
<script type="text/javascript">
function change(bodyName){
var bodyclass = document.getElementsByTagName("body")[0];
bodyclass.className = bodyName;
localStorage.setItem("state", bodyName);
}
</script>
<button onclick="change('style-a')" class="style-a" style="font-size:16px; background:none; border:none;">А</button>
<button onclick="change('style-aa')" class="style-aa" style="font-size:20px; background:none; border:none;">А</button>
<button onclick="change('style-aaa')" class="style-aaa" style="font-size:26px; background:none; border:none;">А</button>
<script type="text/javascript">	
var defaultState = 'style-a';
var state = localStorage.getItem("state");
change(!!state ? state : defaultstate);
</script>


Однако в связи с заменой классов поехали настройки отображения, и я решил менять не класс, а id и сделал так:
<script type="text/javascript">
function change(bodyName){
var bodyid = document.getElementsByTagName("body")[0];
bodyid.idName = bodyName;
localStorage.setItem("state", bodyName);
}
</script>
<button onclick="change('style-a')" class="style-a" style="font-size:16px; background:none; border:none;">А</button>
<button onclick="change('style-aa')" class="style-aa" style="font-size:20px; background:none; border:none;">А</button>
<button onclick="change('style-aaa')" class="style-aaa" style="font-size:26px; background:none; border:none;">А</button>
<script type="text/javascript">	
var defaultState = 'style-a';
var state = localStorage.getItem("state");
change(!!state ? state : defaultstate);
</script>


После произведенных замен по клику ничего не происходит, id не меняется.

ksa 30.06.2017 14:01

Цитата:

Сообщение от zapalych
и я решил менять не класс, а id

Это ошибка резидента! (с) :D

Не делай так. :no:

ksa 30.06.2017 14:02

Цитата:

Сообщение от zapalych
bodyid.idName = bodyName;

Что это за свойство idName? :blink:

zapalych 30.06.2017 14:21

а можно сделать так, чтобы другие классы не удалялись при клике?

zapalych 30.06.2017 14:23

или даже так: чтоб заменялись только определенные (style-a, style-aa, style-aaa)?

Diphenyl Oxalate 30.06.2017 14:32

zapalych, classList

Rasy 30.06.2017 14:32

zapalych,
Ты определись какую проблему хочешь решить. У подтипа HTMLElement нет такого свойства, как idName которое имело бы доступ к атрибуту id. Еще не используй кебабнотацию для именования идентификаторов.

j0hnik 30.06.2017 14:36

Цитата:

Сообщение от zapalych (Сообщение 457014)
а можно сделать так, чтобы другие классы не удалялись при клике?

el.classList.add('className');
или
el.className += ' my-class';

j0hnik 30.06.2017 14:41

Цитата:

Сообщение от zapalych (Сообщение 457016)
или даже так: чтоб заменялись только определенные (style-a, style-aa, style-aaa)?

el.classList.remove('className');
el.classList.add('className');

zapalych 30.06.2017 15:24

Цитата:

Сообщение от j0hnik (Сообщение 457026)
el.classList.remove('className');
el.classList.add('className');

это можно прописать в onclick=""?


Часовой пояс GMT +3, время: 10:31.