动态添加时,onclick事件不起作用

时间:2016-06-06 00:39:00

标签: javascript jquery

我试图通过onclick属性绑定一个函数,但我得到函数未定义错误。 fiddle

(function() {
  function getInfo(x) {
    console.log(x)
  }

  function a() {
    var x = [{
      "name": "main",
      "data": ['1', '2', '3']
    }, {
      "name": "sub",
      "data": ['4', '5', '6']
    }, {
      "name": "lower",
      "data": ['7', '8', '9']
    }]
    for (var i = 0; i < x.length; i++) {
      var data = "<span onclick='getInfo(" + x[i].data + ")'>main </span>";
      data += "<span onclick='getInfo(" + x[i].data + ")'>sub </span>"
      data += "<span onclick='getInfo(" + x[i].data + ")'>lower</span><br>"
      $('#data').prepend(data);
    }


  }
  a()
})()

1 个答案:

答案 0 :(得分:1)

我认为你得到undefined的原因是因为onclick会尝试在全局范围内找到函数,而你的getInfo函数是在函数范围内定义的。

然后,您应该将getInfo作为全局范围(window)的属性来解决问题。例如:

window.getInfo = function(x) {
    console.log(x)
}

请在此处查看更新的fiddle.js:https://jsfiddle.net/fddr0bnv/6/