Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.09.2014, 12:32
Аспирант
Отправить личное сообщение для Webtest Посмотреть профиль Найти все сообщения от Webtest
 
Регистрация: 10.06.2014
Сообщений: 63

Не работает стирание класса / добавление стиля.
Здравствуйте.

Подскажите, почему не работает?
Есть код, который рисует несколько текстовых блоков с кнопкой

<div class="showAnswer" id="hdn_<?php echo $showMessage['id'][$num]; ?>">
	<textarea name="answerArea" class="textareaForAnswer"></textarea>
	<input type="button" class="questionBtn" name="sendAnswer" value="Послать ответ">
</div>

Вот цсс дива: div.showAnswer {display: none;} т.е. он скрытый.
Вот кнопка:
<input type="button" class="questionBtn" name="answer" onclick='showAnswer(<?php echo $showMessage['id'][$num]; ?>)' value="Ответить">

Почему при нажатии на кнопку ничего не происходит? Вот JS код:
1 вариант:
function showAnswer(id) {
		// alert(id);
		document.getElementById('#hdn_'+id).removeClass('div.showAnswer');
	}

2 вариант:
function showAnswer(id) {
		// alert(id);
		document.getElementById('#hdn_'+id).style.display = 'block';
	}

Алерт выводит тот id на который я нажимаю, т.е. согласно этому коду должен либо убираться класс у id, который делает невидимым блок.
Во-втором случае должен менятся стиль на блок.
Но ни 1, ни во 2 случае ничего не происходит. Почему?
Вот еще 3 вариант:
function showAnswer(id) {
		document.getElementById('#hdn_'+id).className = document.getElementById('#hdn_'+id).className.replace('showAnswer', '');
	}

Последний раз редактировалось Webtest, 08.09.2014 в 12:37.
Ответить с цитированием
  #2 (permalink)  
Старый 08.09.2014, 12:38
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

выкиньте свой алерт нафиг. используйте отладчик f12 (в хроме встроенный, т.е. устанавливать не надо)

вот документация как пользоваться отладкой:
http://learn.javascript.ru/debugging-chrome

если вы сами научитесь отлаживать свой код, то это будет просто замечательно
Ответить с цитированием
  #3 (permalink)  
Старый 08.09.2014, 12:41
Аспирант
Отправить личное сообщение для Webtest Посмотреть профиль Найти все сообщения от Webtest
 
Регистрация: 10.06.2014
Сообщений: 63

skrudjmakdak, ну я смотрю через ф12, а через алерт вывожу значения в яваскрипте.
Кстати, я уже нашел почему не работало!!! Оказывается надо было удалить # в айдишниках, ЛОЛ.

Но теперь другой вопрос, как сделать так, чтобы если я нажал 2 раз на кнопку, то форма обратно закрылась т.е. класс обратно приписался?
Ответить с цитированием
  #4 (permalink)  
Старый 08.09.2014, 12:46
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

вот пример:
<html>
<head>
	<style>
	div
	{
	width: 50px;
	height: 50px;
	margin: 10px;
	background-color: red;
	}
	</style>
    
</head>
<body>
	<div></div><div></div>
	
	<script type="text/javascript">
	var divs = document.querySelectorAll('div');
	divs[0].onclick = function () {
		this.style.visibility = 'hidden';
		divs[1].style.visibility = 'visible';
	}
	
	divs[1].onclick = function () {
		this.style.visibility = 'hidden';
		divs[0].style.visibility = 'visible';
	}
	</script>
</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 08.09.2014, 12:53
Аспирант
Отправить личное сообщение для Webtest Посмотреть профиль Найти все сообщения от Webtest
 
Регистрация: 10.06.2014
Сообщений: 63

skrudjmakdak, у меня, почему-то, не работает ваш вариант, а что писать в куериСелекторАл?
А можно ли как-то сделать это как продолжение этого кода на чистом яваскрипте?
function showAnswer(id) {
document.getElementById('hdn_'+id).classList.remove('showAnswer');
}

Чтобы при нажатии менялся value кнопки, а при повторном нажатии форма закрывалась и value менялось обратно.
Как-то так.
Ответить с цитированием
  #6 (permalink)  
Старый 08.09.2014, 12:54
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

Сообщение от Webtest Посмотреть сообщение
skrudjmakdak, ну я смотрю через ф12, а через алерт вывожу значения в яваскрипте.
не нужно этого делать, дал ссылку. почитай. там все гораздо удобней

открываешь отладчик, вкладка sourses(chrome). выбираешь нужный js файл и ставишь точки останова. и можешь смотреть значения переменных

я просто когда тоже начинал, делал как ты. потом понял все прелести отладчика
Ответить с цитированием
  #7 (permalink)  
Старый 08.09.2014, 13:12
Аспирант
Отправить личное сообщение для Webtest Посмотреть профиль Найти все сообщения от Webtest
 
Регистрация: 10.06.2014
Сообщений: 63

skrudjmakdak, а что на счет вопросов повыше?
Я тут пробое всякое, но, пока, не получается.
Ответить с цитированием
  #8 (permalink)  
Старый 08.09.2014, 13:30
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

<html>
<head>
</head>
<body>
	<div>
		<div>????? ?? ?????? 1</div>
		<div><input type="button" value="click me" countClick="0" onclick="clk(this);"></div>
	</div>
	<div>
		<div>????? ?? ?????? 2</div>
		<div><input type="button" value="click me" countClick="0" onclick="clk(this);"></div>
	</div>
	<script>
	function clk (ths) {
		var countClick = ths.getAttribute('countClick');
		++countClick;
		if (countClick == 2)
			ths.parentNode.parentNode.style.display = 'none';
		else
			ths.setAttribute('countClick', countClick);
	}
	</script>
</body>
</html>
Ответить с цитированием
  #9 (permalink)  
Старый 08.09.2014, 13:36
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,201

Сообщение от Webtest
Подскажите, почему не работает?
Оно и не должно работать...

Сообщение от Webtest
Но ни 1, ни во 2 случае ничего не происходит. Почему?
Вот еще 3 вариант
К чему таки есложности...
Как вариант...

<!DOCTYPE html>
<html>
<head>
<!--
<script src='http://code.jquery.com/jquery-latest.js'></script>
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
div.showAnswer {
	display: none;
}
</style>
<script type='text/javascript'>
function showAnswer(N) {
	document.getElementById('hdn_'+N).className='';
};
</script>
</head>
<body>
<div class="showAnswer" id="hdn_1">
	<textarea name="answerArea" class="textareaForAnswer"></textarea>
	<input type="button" class="questionBtn" name="sendAnswer" value="Послать ответ">
</div>
<input type="button" class="questionBtn" name="answer" onclick='showAnswer(1)' value="Ответить">
</body>
</html>
Ответить с цитированием
  #10 (permalink)  
Старый 08.09.2014, 13:38
Аспирант
Отправить личное сообщение для Webtest Посмотреть профиль Найти все сообщения от Webtest
 
Регистрация: 10.06.2014
Сообщений: 63

ksa, да я уже нашел ответ, теперь ищу как сделать кое-что дургое...:
Чтобы при нажатии менялся value кнопки, а при повторном нажатии форма закрывалась и value менялось обратно.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Криво работает добавление в корзину Aprol Ваши сайты и скрипты 0 18.03.2011 14:04
Добавление класса для тега dwel87 Элементы интерфейса 9 11.03.2011 11:46
Добавление класса на елемент по id при фокусе на input Andrew_tl Events/DOM/Window 1 18.02.2010 19:09
ява-скрипт выборочно работает-не работает zeta777 Internet Explorer 0 20.01.2010 11:41
Не работает onClick добавление тега <s> AvaGet Общие вопросы Javascript 13 09.12.2008 18:41