Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   не верно работает onclick. Подскажите плиз (https://javascript.ru/forum/misc/48798-ne-verno-rabotaet-onclick-podskazhite-pliz.html)

mrdeath4 17.07.2014 14:12

не верно работает onclick. Подскажите плиз
 
var tower1 = document.getElementById('tower1');
tower1.onclick = build('tower1');

function build(tower)
{
  document.getElementById(tower).disabled = 'true';
}


Доброго времени суток!
Подскажите, почему у меня данный код выполняется сразу, как загрузилась страница? Т.е. кнопка "tower1" уже сразу неактивна.
Хочу сделать чтобы при клике на не, она стала неактивной. В чем ошибаюсь? И почему нельзя сделать функцию, которая бы запускалась при нажатии кнопки?

MallSerg 17.07.2014 14:19

tower1.onclick = build('tower1'); /* тут вызов функции и присвоение результата свойству onclick */
tower1.onclick = build; /* тут просто присвоение свойству функции */

рони 17.07.2014 14:23

mrdeath4,
http://learn.javascript.ru/bind

mrdeath4 17.07.2014 15:11

я извиняюсь, че-то я не понял, как решить проблему то? )

Все, до меня дошло. Правда не сразу. Спасибо большое всем.

skrudjmakdak 17.07.2014 15:23

<html>
	<head>
		<title>example</title>
	</head>
	<body>
		<input type="button" id="tower1" value="click me">
		<script>
var tower1 = document.getElementById('tower1');
tower1.onclick = build('tower1');

function build(tower)
	{
	return function ()
		{
		document.getElementById(tower).disabled = 'true';
		}
	}

		</script>
	</body>
</html>

mrdeath4 17.07.2014 15:29

Спасибо) интересно решение)

рони 17.07.2014 15:30

mrdeath4,
tower1.onclick = build.bind(null,'tower1');

mrdeath4 17.07.2014 15:46

Спасибо, а вариант, вызвать в онклике автономную функцию, а в ней, в свою очередь, вызвать свою, сильно хуже?

skrudjmakdak 17.07.2014 15:47

рони, а куда делись все программисты? я см, ты тут один за всех отдуваешься))

skrudjmakdak 17.07.2014 15:49

мой код будет работать в старых ие, у рони в новых браузерах, но на старые браузеры нормальные люди уже забили. его метод более современный))


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