Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.05.2010, 00:04
Новичок на форуме
Отправить личное сообщение для Teledrug Посмотреть профиль Найти все сообщения от Teledrug
 
Регистрация: 17.05.2010
Сообщений: 5

Проблема с 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);
}

При загрузке страницы срабатывают события со всех ссылок, без всякого нажатия. В чём проблема?
Ответить с цитированием
  #2 (permalink)  
Старый 19.05.2010, 02:42
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от Teledrug
menus[i].onClick=ps(menus[i].href);
1. Вы вызываете функцию 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, 19.05.2010 в 02:53.
Ответить с цитированием
  #3 (permalink)  
Старый 19.05.2010, 07:52
Новичок на форуме
Отправить личное сообщение для Teledrug Посмотреть профиль Найти все сообщения от Teledrug
 
Регистрация: 17.05.2010
Сообщений: 5

Спасибо, Octane, теперь всё работает!

К тому же javascript:void(0) заменил на return false.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание события onclick? kerranswell Events/DOM/Window 31 09.05.2011 21:20
проблема с onClick 3BEPb Events/DOM/Window 4 22.12.2009 20:46
Проблема с onclick Reflexion Events/DOM/Window 9 25.10.2009 22:54
Событие onClick avtor01 Events/DOM/Window 3 03.09.2009 18:01
Проблема спама lliberty AJAX и COMET 1 12.03.2009 16:47