Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Событие запускается со второго клика (https://javascript.ru/forum/events/20587-sobytie-zapuskaetsya-so-vtorogo-klika.html)

sympler 10.08.2011 15:18

Событие запускается со второго клика
 
не могу понять почему фукнция работает только со второго клика

<a href="javascript:void" onclick="showAdd();">Показать дополнительные поля</a><br>

<div id="add_tables" >

это блок

</div>


function showAdd() {if (document.getElementById("add_tables").style.display == "none") {document.getElementById("add_tables").style.display = "block";} else {document.getElementById("add_tables").style.display = "none";} }

devote 10.08.2011 15:21

<a href="javascript:void" onclick="showAdd(); return false;">Показать дополнительные поля</a><br>

ksa 10.08.2011 15:27

Цитата:

Сообщение от sympler
почему фукнция работает только со второго клика

Условие поменяй...

<!DOCTYPE html>
<html>
<head>
<style type="text/css">
#add_tables {
	display: none;
}
</style>
<script type="text/javascript">
function showAdd() {
	var o=document.getElementById("add_tables")
	if (o.style.display == "block") {
		o.style.display = "none";
	} else {
		o.style.display = "block";
	} 
}
</script>
</head>
<body>
<a href="javascript:void" onclick="showAdd();">Показать дополнительные поля</a>
<br />
<div id="add_tables">
	это блок
</div>
</body>
</html>


Первый раз нужное тебе значение = пусто...

devote 10.08.2011 15:32

Цитата:

Сообщение от ksa
Первый раз нужное тебе значение = пусто...

все у него с условием норм, то что оно пустое это говорит о том что оно отображается, но если оно скрыто, то 100% имеет значение none, а проверять на присутствие block не рекомендуется, потому как оно может иметь значение отличное от block, а значение none всегда стоит в случае если элемент скрыт даже свойствами css

ksa 10.08.2011 15:35

Цитата:

Сообщение от devote
если оно скрыто, то 100% имеет значение none

Бивас тест...

<!DOCTYPE html>
<html>
<head>
<style type="text/css">
#add_tables {
	display: none;
}
</style>
<script type="text/javascript">
function showAdd() {
	var o=document.getElementById("add_tables")
	alert(o.style.display)
	if (o.style.display == "none") {
		o.style.display = "block";
	} else {
		o.style.display = "none";
	} 
}
</script>
</head>
<body>
<a href="javascript:void" onclick="showAdd();">Показать дополнительные поля</a>
<br />
<div id="add_tables">
	это блок
</div>
</body>
</html>


Никакого none... :)

Цитата:

Сообщение от devote
а проверять на присутствие block не рекомендуется, потому как оно может иметь значение отличное от block

Это кто такое сказал? :blink:
У автора только два значения
- block
- none

devote 10.08.2011 15:36

Цитата:

Сообщение от ksa
Это кто такое сказал?

да яж образно, что бы в будущем прог знал что стоит придерживаться того а не того.

ksa 10.08.2011 15:38

Цитата:

Сообщение от devote
что бы в будущем прог знал что стоит придерживаться того а не того

Несогласный я... :no:

devote 10.08.2011 15:41

Цитата:

Сообщение от ksa
Никакого none...

Да видимо я попутал с тем когда вводишь display: none; в в атрибуте style="" хотя конечно лучше юзать currentStyle или computedStyle (FF) там четко стоит то что нужно

devote 10.08.2011 15:44

Цитата:

Сообщение от ksa
Несогласный я...

Гогда начнешь писать какой нить фреймфорк или плаг где тебе не будет извесно значение элемента по умолчанию, тогда согласишься и будешь проверять на значение none.

ksa 10.08.2011 15:54

devote, я буду проверять на значение которое сам буду прописывать. :) А не то какое стоит в стилях...


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