单击时未定义的Javascript错误

时间:2017-03-12 10:25:07

标签: javascript

当我尝试点击按钮时,我不确定为什么会收到此错误。

  

未捕获的TypeError:无法读取未定义的属性“on”

JSFiddle:https://jsfiddle.net/mm5crd3b/

由于

public static void main(String[] args) {
        String str = "hello";
        System.out.println(str);
        char[] strchar = str.toCharArray();
        int first;
        int last = 4;

        System.out.println("The reversed is: ");
        for (first = 0; first < 5; first++) {
            strchar[first] = str.charAt(last);

            last--;

        }
        str = String.valueOf(strchar);
        str = str.toUpperCase();
        System.out.println(str);

    }

3 个答案:

答案 0 :(得分:2)

您正以错误的方式访问该物业,

bindEvents: function() {
  this.cacheDom.submitAdd.on("click", addItem);
},

在查看代码时,我可以告诉cacheDom是一个将submitAdd作为属性包含在其中的对象。

此外,

item: {
 text: this.inputAdd.value,
},

这部分代码无法按预期工作。您可以将其编写为解决问题的getter。

get itemText() {
 return this.cacheDom.inputAdd.value,
},

答案 1 :(得分:1)

您的bindEvents方法有一些小改动

 bindEvents: function() {
        this.cacheDom["submitAdd"].on("click", this.addItem);
      },

submitAdd是cacheDom对象中的一个键,因此您可以使用cacheDom而不是直接访问它们,addItem是对象实例的一部分,因此您可以使用它来访问它们。如果更改此设置,错误将消失。

答案 2 :(得分:1)

它与您的代码无关。这是Sizzle / Sizzle版本中的错误。在你点击按钮之前就有错误了。

异常源是$(document).ready(function() { (function() { var itemTracker = { // init init: function() { this.bindEvents(); }, // cacheDom cacheDom: { inputAdd: $('#inputAdd'), submitAdd: $('#submitItem') }, // item item: { text: this.inputAdd.value, }, // Bind Events bindEvents: function() { this.cacheDom.submitAdd.on("click", this.addItem); }, // Add item addItem: function() { console.log("test"); } // Remove item // Edit Item // Complete Item // Uncomplete Item }; itemTracker.init(); })(); }); 尝试初始化默认文档。

但你的代码也错了:) 我想你想要像这样(这里是点击工作的处理程序)

$(document).ready(function() {
var i = 0;
  $('#tab tr').each(function() {
     if(!(i++%2)) { // if(i % 2 == 0 and increment i as well
       $(this).css('background','red');
     }
  });
});