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

标签 javascript jquery

我尝试通过 onclick 属性绑定(bind)函数,但收到函数未定义错误。 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()
})()

最佳答案

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

那么您应该将 getInfo 设置为全局范围(window)的属性来解决该问题。例如:

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

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

关于javascript - 动态添加时 onclick 事件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37648163/

相关文章:

jquery - 在 while 循环中使用 Jquery 加载动态数据

javascript - 如何使用 jquery 将 <br> 的上一个和下一个同级文本与 div 换行?

javascript - Controller 的 ngdoc 文档

javascript - 如何使用 JavaScript 在 HTML 中创建文本文件

javascript - 将参数传递给 async.js 任务

javascript - 使用鼠标上下绘制 Canvas

javascript - 从文件夹动态创建 img 元素

jquery - 向左切换菜单

javascript - 在每个容器内移动 DOM 中的元素

javascript - 监听函数执行