Проблема с onclick
Вот код:
ms=document.getElementById("menu").getElementsByTagName("a");
for (var i=0; i<ms.length; i++) {
menus[i].onClick=ps(menus[i].href);
menus[i].href="javascript:void(0)";
}
//Далее функция
function ps (k) {
alert (k);
}
При загрузке страницы срабатывают события со всех ссылок, без всякого нажатия. В чём проблема? |
Цитата:
ps и присваиваете свойству onClick результат выполнения этой функции, т.е. undefined.
function ps (k) {
//alert (k);
}
var result = ps("…");
alert(result);
// Все равно, что:
//menus[i].onClick = undefined;
Нужно передавать ссылку на функцию: menus[i].onClick = ps;Аргументы в обработчик события, как в функцию, передать не получится. Об этом дальше. 2. Обработчику события соответствует свойство onclick, а не onClick. JavaScript регистрозависимый. menus[i].onclick = ps; 3. Чтобы ваш скрипт работал правильно, нужно будет использовать замыкания http://javascript.ru/basic/closure#p...-ispolzovaniya
for (var i=0; i<ms.length; i++) {
menus[i].onсlick = function (href) {
return function () {
ps(href);
};
}(menus[i].href);
menus[i].href="javascript:void(0)";
}
4. http://javascript.ru/unsorted/why_href_js_is_bad |
Спасибо, Octane, теперь всё работает!
К тому же javascript:void(0) заменил на return false. |
| Часовой пояс GMT +3, время: 11:22. |