Обработка событий onclick - PullRequest
0 голосов
/ 12 августа 2011

У меня есть список, который содержит ссылки.Я использую этот код для доступа к ним:

function initAll() {

 var allLinks = document.getElementById("nav").getElementsByTagName("a");
 for (var i=0; i< allLinks.length; i++) {
    allLinks[i].onmouseover = showPreview;
    allLinks[i].onmouseout = function() {
         document.getElementById("previewWin").style.visibility = "hidden";
         allLinks[i].onclick=mainProcess;
        }
    }
}

function mainProcess(evt){
    alert(this.value);
    false;
}

Это не точный код, то, что я пытаюсь сделать, это то, что мне нужно идентифицировать ссылку нажал и выполнять некоторые функции на основе ссылки нажал,Я не знаю, где нужно изменить код ... Страница выдает ошибку в строке allLinks[i].onclick=mainProcess(this);.

Теперь проблема в том, что я не знаю, как мне обработать все три события?

Ответы [ 3 ]

1 голос
/ 12 августа 2011

1) Вы устанавливаете свойство onclick каждой из ссылок на значение , возвращаемое mainProcess() - которое всегда возвращает false. Итак, по сути, вы пишете allLinks[i].onclick = false;

2) Когда вы непосредственно определяете обработчик события, аргумент, который передается ему при возникновении события, является объектом события, а не элементом, по которому он был запущен.

Чтобы выяснить элемент, вы можете посмотреть в объекте события или (так как обработчик был добавлен к самому элементу) просто использовать this, так как это будет ссылаться на элемент ссылки

for (var i = 0; i < allLinks.length; i++) {
   allLinks[i].onclick = mainProcess;
}

function mainProcess(event) {
{
    alert(this.value);
    return false;
}
0 голосов
/ 12 августа 2011

Вам нужно передать это mainProcess(link).Как указано в http://www.quirksmode.org/js/events_tradmod.html «Без скобок!»и "это" главы.Проверьте это, там тоже есть пример.Должно быть все, что тебе нужно.

0 голосов
/ 12 августа 2011

Попробуйте изменить на это:

for (var i = 0; i < allLinks.length; i++) {
   allLinks[i].onclick = mainProcess;
}

function mainProcess(event) {
{
    alert(this.value);
    return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...