не верно работает onclick. Подскажите плиз
var tower1 = document.getElementById('tower1');
tower1.onclick = build('tower1');
function build(tower)
{
document.getElementById(tower).disabled = 'true';
}
Доброго времени суток! Подскажите, почему у меня данный код выполняется сразу, как загрузилась страница? Т.е. кнопка "tower1" уже сразу неактивна. Хочу сделать чтобы при клике на не, она стала неактивной. В чем ошибаюсь? И почему нельзя сделать функцию, которая бы запускалась при нажатии кнопки? |
tower1.onclick = build('tower1'); /* тут вызов функции и присвоение результата свойству onclick */
tower1.onclick = build; /* тут просто присвоение свойству функции */
|
mrdeath4,
http://learn.javascript.ru/bind |
я извиняюсь, че-то я не понял, как решить проблему то? )
Все, до меня дошло. Правда не сразу. Спасибо большое всем. |
<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,
tower1.onclick = build.bind(null,'tower1'); |
Спасибо, а вариант, вызвать в онклике автономную функцию, а в ней, в свою очередь, вызвать свою, сильно хуже?
|
рони, а куда делись все программисты? я см, ты тут один за всех отдуваешься))
|
мой код будет работать в старых ие, у рони в новых браузерах, но на старые браузеры нормальные люди уже забили. его метод более современный))
|
кстати нашел у extjs свой бинд:
bind: function(fn, scope, args, appendArgs) {
if (arguments.length === 2) {
return function() {
return fn.apply(scope, arguments);
};
}
var method = fn,
slice = Array.prototype.slice;
return function() {
var callArgs = args || arguments;
if (appendArgs === true) {
callArgs = slice.call(arguments, 0);
callArgs = callArgs.concat(args);
}
else if (typeof appendArgs == 'number') {
callArgs = slice.call(arguments, 0);
Ext.Array.insert(callArgs, appendArgs, args);
}
return method.apply(scope || Ext.global, callArgs);
};
},
|
| Часовой пояс GMT +3, время: 02:39. |