【问题标题】:Changing function parameters for onkeypress event according to source id根据源 ID 更改 onkeypress 事件的函数参数
【发布时间】:2011-01-06 17:44:22
【问题描述】:

我想根据他们的 id 为网页中的所有输入字段分配一个函数。为此,我编写了下面的代码,但所有输入字段都使用相同的参数运行keyPress.. :(

///////////////////Checks all available 'text' 'input's////////////////////
var inputs = document.getElementsByTagName('input');
var cnvtrInput = new Array();
for (var index = 0; index < inputs.length; index++) {
 if (inputs[index].type == 'text') {
  cnvtrInput[index] = new converter(inputs[index]);
  inputs[index].onkeypress = function() {return keyPess(cnvtrInput[index])};
 }
}
//index--;

通过最后一条注释语句发现keyPress的传递元素是index的最后一个值;

最后我尝试了同样的 textareas 但失败了...

【问题讨论】:

    标签: javascript events input textarea dom-events


    【解决方案1】:

    您正在循环中创建函数,这总是很棘手。循环完成后,index 将具有值inputs.length,并且您的回调引用index。但是如果你在循环中定义一个新变量,它也不会起作用,因为 JavaScript 没有块范围,只有函数范围。
    您必须在新范围内捕获价值,例如通过使用立即函数:

    inputs[index].onkeypress = (function(value) {
        return function() {return keyPess(value)};
    }(cnvtrInput[index]));
    

    【讨论】:

      猜你喜欢
      • 2011-12-01
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多