javascript - 这段代码哪里出错了

标签 javascript

这是我的代码片段。但是代码在内部 for 循环之后中断了。但是没有收到错误消息。 有什么想法吗?

谢谢。

    var lastnames   = document.getElementsByClassName('box_nachname');
    var firstnames      = document.getElementsByClassName('box_vorname');
    var teilnehmer  = document.getElementsByClassName('select');
    observers = [];

    // iterate over nachname array.
    for (var i = 0; i < lastnames.length; i++) {

        // Create an observer instance.
        observers[i] = new Observer();


        // Subscribe oberser object.
        for(idx in teilnehmer) {
            if(teilnehmer[idx].id.split("_")[0].toLowerCase() !== "zl") {
                var anynum = function(element) {
                                             observers[i].subscribe(element, updateTeilnehmerSelectbox);
                                         }(teilnehmer[idx]);
            }
        }


        //on blur the Observer fire the updated info to all the subscribers.
        var anynumNachname = function(j, element, value, observer) {
                                            cic.addEvent(lastnames[j], 'blur', observer.fire(element, value));
                                            } (i, lastnames[i], lastnames[i].value, observers[i]);
        cic.addEvent(firstnames[i], 'blur', function(element, value, observer) {observer.fire(element, value)}(lastnames[i], lastnames[i].value, observers[i]));

    }

最佳答案

您在“addEvent”调用中使用了循环变量“i”。这将无法正常工作,因为每个事件处理程序都将共享相同的“i”,因此每个事件处理程序只能看到“i”设置为的最后一个值。

cic.addEvent(firstnames[i], 'blur', (function(index) {
  return function(element, value, observer) {
    observer.fire(element, value)}(lastnames[index], lastnames[index].value, observers[index]);
  };
})(i));

另外,虽然我不确定这是必要的,但我会把您为“anynumNachname”调用的函数放在括号中:

var anynumNachname = (function(j, element, value, observer) {
  cic.addEvent(lastnames[j], 'blur', observer.fire(element, value));
})(i, lastnames[i], lastnames[i].value, observers[i]);

关于javascript - 这段代码哪里出错了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2759583/

相关文章:

javascript - 双击可编辑每个单词

javascript - 在 REACT 中设置数据集状态后如何重新加载 D3 svg 元素

javascript - jQuery 可排序和可放置列表

javascript - 是否可以使用 TypeScript 指定字符串格式?

javascript - 是否可以在 javascript 中创建具有 123,345 这样的序列而不是组合的快捷方式?

javascript - 使用 Reactjs 获取 GET 请求 - 如何在请求中实现可重用组件来呈现数据?

javascript - HTML 在 UIWebView 中选择 <td> 标签下的一行

javascript - 在不影响占位符的情况下增加密码输入字符大小

javascript - graphql查询转json查询

javascript - WEB API - 如何使用身份向用户中的自定义属性添加值