Javascript通过for循环分配事件处理程序

Javascript通过for循环分配事件处理程序,javascript,events,dom,Javascript,Events,Dom,如果我在事件中表现得有点“无趣”,请道歉,但无论出于何种原因,以下内容对我不适用: var someDomRef = document.getElementByRef("refVal"); for(i=0;i<someDomRef.length;i++) { //or someDomRef.childNodes.length/someDomRef.TagRef.length someDomRef.onmouseup = function() { someDomRef.childNod

如果我在事件中表现得有点“无趣”,请道歉,但无论出于何种原因,以下内容对我不适用:

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])
   }
  };
 };
}
var someDomRef=document.getElementByRef(“refVal”);

for(i=0;ii在调用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);
}
var someDomRef=document.getElementByRef(“refVal”);

for(i=0;ii在调用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);
}
var someDomRef=document.getElementByRef(“refVal”);

对于(i=0;i什么是someValue它从何而来。我也不明白你的意思。附加事件处理程序要做什么?抱歉,请检查我的编辑,了解我使用someVal所指内容的修改。我试图从另一个处理程序中更改对象事件的处理程序,该处理程序用于在con上执行的该对象的同一事件正在发生外部事件的附加。someValue是什么?它来自何处。另外,我不明白你的意思。附加事件处理程序要做什么?抱歉,请检查我的编辑,了解我使用someVal所指内容的修改。我试图从同一事件的另一个处理程序中更改对象事件的处理程序在外部事件发生的情况下执行该对象的编辑。@James,注意,无需在文章正文中讨论编辑内容——因此保留编辑文章的编辑历史记录,因此总是很容易找到原始内容、添加或删除的内容以及签入说明原因。:)谢谢。我对创建该函数所使用的语法并不熟悉,我也不太需要搜索与它相关的方式和原因(即(function(){})(;)--您能解释一下吗?谢谢!@user784446它被称为自调用函数。它是函数的定义,并且在定义之后立即运行。因此,对于
SomeValue
中的每个值,函数以
i
作为参数运行。其余的都是自解释的isuppose@user784446它用于创建一个保留局部变量的“闭包”(在本例中为i)大约在它们通常会超出范围之后。@sarnold-我实际上添加了正文编辑解释,以确保我的编辑很长enough@James,请注意,没有必要在文章正文中讨论编辑内容——因此保留已编辑文章的编辑历史记录,因此很容易找到原始内容、添加或删除的内容以及eckin指出了原因。:)谢谢。我自己并不熟悉创建该函数所使用的语法,我也不太需要搜索与它相关的方式和原因(即(function(){})(;)--您能解释一下吗?谢谢!@user784446它被称为自调用函数。它是函数的定义,并且在定义之后立即运行。因此,对于
SomeValue
中的每个值,函数以
i
作为参数运行。其余的都是自解释的isuppose@user784446它用于创建一个““闭包”,在局部变量(在本例中为i)通常会超出范围后保留它们。@sarnold-我实际上添加了正文编辑解释,以确保我的编辑足够长