Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Странный глюк с кнопкой <button> (https://javascript.ru/forum/dom-window/51788-strannyjj-glyuk-s-knopkojj-button.html)

torrius 19.11.2014 22:27

Странный глюк с кнопкой <button>
 
<!DOCTYPE HTML>
<html>
	<head>
		<script type="text/javascript">
			var num = 0;
			function count(){
				return ++num;
			}
		</script>
	</head>
	<body>
		<form>
			<button onclick="alert(count())">button</button>
		</form>
	</body>
</html>

При каждом вызове count(), переменная num должна увеличиваться на единицу, но именно в данном примере этого не происходит.
Однако, если тег <button> сменить любым другим тегом, или просто вынести его за пределы формы - все работает!
Как объяснить причину такого поведения?

рони 19.11.2014 22:32

Цитата:

Сообщение от torrius
Как объяснить причину такого поведения?

:cray:
Цитата:

Сообщение от torrius
<form>


рони 19.11.2014 22:43

torrius,
форма при клике отправляется -- страница обновляется
либо остановите всплытие клика
<button onclick="alert(count());return false">

либо отмените отправку формы
<form onsubmit="return false">

torrius 19.11.2014 22:48

Буду благодарен, если объясните сакральную роль <form>, и уж заодно: почему работает без нареканий в другом варианте?
<form>
	<input onclick="alert(count())" type="button" value="button" />
</form>

рони 19.11.2014 22:51

Цитата:

Сообщение от torrius
почему работает без нареканий в другом варианте?

Цитата:

Сообщение от torrius
type="button"

<form>
			<button>button</button>
		</form>
        <script>
           alert(document.querySelector('button').type)
        </script>

torrius 19.11.2014 22:53

Спасибо, понял! :cray: )))
Не знал, что <button> как и <input type="submit"> так же отправляет форму )))
Нда....

рони 19.11.2014 22:54

torrius,
http://htmlbook.ru/html/button/type

Цитата:

Значение по умолчанию

submit

torrius 19.11.2014 23:09

Еще раз спасибо, за оперативный исчерпывающий ответ и за ссылку на мануал :)


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