2011-08-03 170 views
0
for (var key in obj[i]) { 
    dataDump[key] = textField.value; 
    var callback = function(zeKey){ 
     return function(e){ 
      dataDump[zeKey] = e.source.value; 
     }; 
    }(key); 
    textField.addEventListener('change', callback); 
} 

的负载。当我打开的窗口中,该功能就会自动调用,这是我不想,而是我想这只有当我做了改变被调用。功能总体要求

重点是要求function(zeKey){...}(key)。当你这样做的时候,键是一个字符串被作为参数(zeKey)复制到你的匿名函数中。

+1

哪个功能?该函数设置回调?从外表看,它不是应该的吗? – FishBasketGordo

回答

1

以下

var callback = function(zeKey){ 
    return function(e){ 
     dataDump[zeKey] = e.source.value; 
    }; 
}(key); 
  1. 调用与参数zeKey匿名函数。
  2. 这个匿名函数返回另一个函数。这个返回的函数被分配给回调函数。

如果你的意思是“函数正在调用”,那么这就是预期的行为。

只有在DOM准备就绪后,才应该调用整个代码。将所有这些放在一个函数中,并确保仅在window.onload或(jQuery's).ready()

上调用该函数,该函数返回的函数仅在回调期间被调用。

+0

我可以为一个字段写两个列表器..我的意思是.. textField.addEventListener('change',callback,callback2)其中callback2只会在更改期间被调用...一个正常的函数 –

+0

@John Cooper你可以写多个一个元素的相同事件的监听器(这就是为什么_add_'EventListener')。你这样做,加上两个监听器:'element.addEventListener('click',function1);''element.addEventListener('click',function2);' – Nivas

0

创建dom后添加这些代码。如果上面的代码位于函数内部,请附加到window.load或在页面末尾写入这些代码。