Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.05.2017, 16:59
Кандидат Javascript-наук
Отправить личное сообщение для rafaello Посмотреть профиль Найти все сообщения от rafaello
 
Регистрация: 09.11.2012
Сообщений: 100

Событие onchange(checkbox) для двух div
Здравствуйте.
function showOrHide(cb, cat) {
    cb = document.getElementById(cb);
    cat = document.getElementById("cat_" + cat);
	disc_cat = document.getElementById("disc_cat_" + cat);
    if (cb.checked){ 
		cat.style.display = "block";
	    disc_cat.style.display = "block";}
    else {cat.style.display = "none";
	     disc_cat.style.display = "none";}
  }

<input type="checkbox" name="cb1" id="check1" value="1" checked="checked" onchange = 'showOrHide("check1", 1);' />
<input type="checkbox" name="cb2" id="check2" value="2" checked="checked" onchange = 'showOrHide("check2", 2);' />

$items = array(1, 2);
$i = 1;
foreach($items as $item){
echo '<div name="qu-qu" id="cat_' .$i. '">здесь идет код</div>';
echo '<div name="quqareku" id="disc_cat_' .$i. '">здесь другой код</div>';
$i++;
}

Проблема в том, что при нажатии на чекбокс срабатывает "display:none;" только для первого дива. Второй див ни в какую не работает. Выдает ошибку:"Cannot read property 'style' of null"
Пожалуйста, подскажите, как сделать так, чтобы при нажатии на чекбокс сработало сразу два дива одновременно.
Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 03.05.2017, 17:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

rafaello,
строки 3 и 4 поменяйте местами
Ответить с цитированием
  #3 (permalink)  
Старый 03.05.2017, 18:38
Кандидат Javascript-наук
Отправить личное сообщение для rafaello Посмотреть профиль Найти все сообщения от rafaello
 
Регистрация: 09.11.2012
Сообщений: 100

Ура... заработало!!!
А что это было? Как это понять?
Ответить с цитированием
  #4 (permalink)  
Старый 03.05.2017, 19:15
Кандидат Javascript-наук
Отправить личное сообщение для rafaello Посмотреть профиль Найти все сообщения от rafaello
 
Регистрация: 09.11.2012
Сообщений: 100

Заодно подскажите пожалуйста...
В момент срабатывания функции showOrHide() кроме того, что она изменяет стиль с "display:none" на "display:block", надо еще изменить класс.
Было
class="currtext required qtc_requiredoption"
Надо
class="currtext"
Что надо дописать в эту функцию, чтобы еще изменять класс?
Ответить с цитированием
  #5 (permalink)  
Старый 03.05.2017, 19:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от rafaello
Как это понять?
строка 3: вы число превратили в обьект
строка 4: строку "disc_cat_" сложили с обьектом --- такого id естественно нет.
Сообщение от rafaello
надо еще изменить класс.
бессмысленно, но можно так

cat.className = "currtext" 
//....
cat.className = "currtext required qtc_requiredoption"
Ответить с цитированием
  #6 (permalink)  
Старый 03.05.2017, 20:40
Кандидат Javascript-наук
Отправить личное сообщение для rafaello Посмотреть профиль Найти все сообщения от rafaello
 
Регистрация: 09.11.2012
Сообщений: 100

Понял.... Спасибо за помощь!!!!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Событие по нажатии двух клавиш клавиатуры. lancer Events/DOM/Window 11 08.01.2017 14:11
Скрипт для показа/скрытия содержимого div follor Элементы интерфейса 2 22.02.2015 18:17
событие click() для области mshdn Events/DOM/Window 5 25.04.2014 15:04
Если размера div не хватает для текста Гробовщик (X)HTML/CSS 7 19.07.2013 00:44
Не работает AppendChild для div, причём только в IE _Kpot_ Internet Explorer 5 12.02.2009 10:55