Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Почему так странно работает classname?
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Почему так странно работает classname?

Страниц (1): [1]
 

1. zusicks438 - 01 Апреля, 2013 - 17:22:40 - перейти к сообщению
Доброго времени суток.

Есть элементарный код (посмотреть пример страницы можно здесь):

CODE (javascript):
скопировать код в буфер обмена
  1. <script>function showdiv(kid) {if(document.getElementById(kid).className="kaddress") document.getElementById(kid).className="kaddressvisible"; else document.getElementById(kid).className="kaddress";}</script>

CODE (html):
скопировать код в буфер обмена
  1. <style>.kaddress{visibility: hidden; position: absolute;} .kaddressvisible{visibility:visible; position: absolute; background-color: #ffffff;}</style>
  2. <span onclick=showdiv("kdiv1") style="display:block;">Просмотреть все адреса</span>
  3. <div id="kdiv1" class="kaddress">Авиамоторная ул., д. 10</div>


Что делает код: при нажатии на span показывает div (меняя класс), при повторном нажатии скрывает div (меняет класс обратно).

Почему в первый раз класс меняется, а вот обратно эта штука работать не хочет?

В принципе также буду рад, если кто-то подскажет, как можно выставить свойство visibility напрямую, не прибегая к изменению класса. Не силен я в JavaScript, но не привлекать же стороннего программиста ради трех строчек кода.
2. DeepVarvar - 01 Апреля, 2013 - 17:45:51 - перейти к сообщению
Потому, что св-во className содержит строку, в которой через пробел может быть сколько угодно названий классов.
Соответственно тупое сравнение не прокатит.
Нужно искать вхождение подстроки.
3. SAD - 01 Апреля, 2013 - 17:47:00 - перейти к сообщению
if(document.getElementById(kid).className=="kaddress")

ничего не потеряли?
4. zusicks438 - 01 Апреля, 2013 - 17:53:14 - перейти к сообщению
SAD пишет:
if(document.getElementById(kid).className=="kaddress")

ничего не потеряли?

Потерял, точно. Спасибо, теперь все работает.

Цитата:
Потому, что св-во className содержит строку, в которой через пробел может быть сколько угодно названий классов.
Соответственно тупое сравнение не прокатит.
Нужно искать вхождение подстроки.

Вроде уже к делу не относится, но стало интересно. Ведь className относится именно к выбранному элементу, разве он может содержать что-то кроме актуального названия класса?


А сколько сообщений надо написать, чтобы сказать "Спасибо"? Не нашел этого в правилах.
5. DeepVarvar - 01 Апреля, 2013 - 17:57:12 - перейти к сообщению
CODE (html):
скопировать код в буфер обмена
  1. <style type="text/css">
  2. .one {
  3.   color: #f00;
  4. }
  5. .two {
  6.   font-size: 40px;
  7. }
  8. .more {
  9.   font-style: italic;
  10. }
  11. </style>
  12. <div class="one two more">test</div>

(Добавление)
zusicks438 пишет:
А сколько сообщений надо написать, чтобы сказать "Спасибо"? Не нашел этого в правилах.
Либо я могу ему щас за вас поставить, либо подождете пока у вас будет 50 сообщений.
6. zusicks438 - 01 Апреля, 2013 - 17:58:43 - перейти к сообщению
Да, логично. Буду иметь в виду.

Цитата:
Либо я могу ему щас за вас поставить, либо подождете пока у вас будет 50 сообщений.

А Вам кто поставит Радость А на "Жалобу" тут нельзя нажать, чтобы попросить жамкнуть "Спасибо" (на 4pda есть такая система)?
7. DeepVarvar - 01 Апреля, 2013 - 18:01:54 - перейти к сообщению
zusicks438 пишет:
А Вам кто поставит
А мне то за что? Плюсанул SAD'у, теперь 41.
8. zusicks438 - 01 Апреля, 2013 - 18:03:25 - перейти к сообщению
Цитата:
А мне то за что? Плюсанул SAD'у, теперь 41.

За разжевывание по классам. В любом случае спасибо.
9. nerv - 02 Апреля, 2013 - 03:07:47 - перейти к сообщению
DeepVarvar пишет:
Потому, что св-во className содержит строку

в современных браузерах есть свойство classList (массив или объект не помню)
10. armancho7777777 - 02 Апреля, 2013 - 04:40:32 - перейти к сообщению
Массивоподобный объект.

 

Powered by ExBB FM 1.0 RC1