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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Почему так странно работает classname?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
zusicks438
Отправлено: 01 Апреля, 2013 - 17:22:40
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




Доброго времени суток.

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

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, но не привлекать же стороннего программиста ради трех строчек кода.

(Отредактировано автором: 01 Апреля, 2013 - 17:46:20)

 
 Top
DeepVarvar Супермодератор
Отправлено: 01 Апреля, 2013 - 17:45:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Потому, что св-во className содержит строку, в которой через пробел может быть сколько угодно названий классов.
Соответственно тупое сравнение не прокатит.
Нужно искать вхождение подстроки.
 
 Top
SAD
Отправлено: 01 Апреля, 2013 - 17:47:00
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




if(document.getElementById(kid).className=="kaddress")

ничего не потеряли?
 
 Top
zusicks438
Отправлено: 01 Апреля, 2013 - 17:53:14
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




SAD пишет:
if(document.getElementById(kid).className=="kaddress")

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

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

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

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


А сколько сообщений надо написать, чтобы сказать "Спасибо"? Не нашел этого в правилах.
 
 Top
DeepVarvar Супермодератор
Отправлено: 01 Апреля, 2013 - 17:57:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




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 сообщений.
 
 Top
zusicks438
Отправлено: 01 Апреля, 2013 - 17:58:43
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




Да, логично. Буду иметь в виду.

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

А Вам кто поставит Радость А на "Жалобу" тут нельзя нажать, чтобы попросить жамкнуть "Спасибо" (на 4pda есть такая система)?

(Отредактировано автором: 01 Апреля, 2013 - 18:00:22)

 
 Top
DeepVarvar Супермодератор
Отправлено: 01 Апреля, 2013 - 18:01:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




zusicks438 пишет:
А Вам кто поставит
А мне то за что? Плюсанул SAD'у, теперь 41.
 
 Top
zusicks438
Отправлено: 01 Апреля, 2013 - 18:03:25
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




Цитата:
А мне то за что? Плюсанул SAD'у, теперь 41.

За разжевывание по классам. В любом случае спасибо.
 
 Top
nerv
Отправлено: 02 Апреля, 2013 - 03:07:47
Post Id



Посетитель


Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013  
Откуда: Россия


Помог: 9 раз(а)




DeepVarvar пишет:
Потому, что св-во className содержит строку

в современных браузерах есть свойство classList (массив или объект не помню)


-----
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
 
 Top
armancho7777777 Супермодератор
Отправлено: 02 Апреля, 2013 - 04:40:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Массивоподобный объект.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB