Javascript присваивает обработчики событий через цикл for - PullRequest
1 голос
/ 06 июня 2011

Прошу прощения, если я выгляжу немного «нубистски» с событиями, но по какой-то причине следующее не работает для меня:

var someDomRef = document.getElementByRef("refVal");
for(i=0;i<someDomRef.length;i++) { //or someDomRef.childNodes.length/someDomRef.TagRef.length
 someDomRef.onmouseup = function() {
  someDomRef.childNodes[i].onmouseover=function() {
   if(someRef.onmouseup) {
    //return false for the onmouseover handler of this(someDomRef.childNodes[i])
   }
  };
 };
}

Каждый раз, когда я отпускаю кнопку мыши после ее удержания на someDomRef, в консоли JS обнаруживается ошибка «не может быть назначено onmouseover неопределенному объекту». Любая помощь будет очень полезна для решения этой проблемы (примечание: я знаю, что могу назначить другой обработчик событий вне функции onmouseover для себя при условии someDomRef.onmouseup, но я хотел бы знать, как этого добиться из самого onmouseover (я также пытался назначить var x = someDomRef.childNodes [i] и передать его в качестве аргумента условного предложения для someRef.onmouseup, но это тоже не работает (хотя и не работает) вернуть ошибку для этой попытки)).

1 Ответ

1 голос
/ 06 июня 2011

я не определен, когда вызывается mouseup.Вам нужно закрыть это с помощью некоторых функций закрытия:

var someDomRef = document.getElementByRef("refVal");
for(i=0;i<someval;i++) {
    (function(i) {
        someDomRef.onmouseup = function() {
            someDomRef.childNodes[i].onmouseover=function() {
                if(someRef.onmouseup) {
                    //return false for the onmouseover handler of this(someDomRef.childNodes[i])
                }
            };
        };
    })(i);
}

Вам может понадобиться другое закрытие внутри функции onmouseup

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...