JavaScript 错误 : Uncaught ReferenceError: edit is not defined

标签 javascript jquery html events dom

我正在从一个 onclick 事件中调用一个名为 edit 的函数,如下所示。

<script type="text/javascript">
  $(document).ready(function () {
    ...

    $.each(data, function (key, val) {
      ...

      var td11 = $('<input type="button" value="Edit" onclick="edit();" />')
        .attr("name",val.Id);

      $(tr2).append(td11);
      $(table1).append(tr2);
    });

    $("#cers").append(table1);

函数定义在$.each循环外,$(document).ready内,如下

function edit() {
  alert("Id ");
}

当我点击“编辑”按钮时,Chrome 显示错误:Uncaught ReferenceError: edit is not defined。

没有其他错误。

最佳答案

可能您定义的 edit 函数不在全局范围内。它不仅应该在 $.each 循环之外定义,而且应该在 $(document).ready 等之外定义。例如,这有效:

<!doctype html>

<html>
  <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>

    <script type="text/javascript">
      function func () {
        alert('func');
      }

      $(document).ready(function () {
        $('<a href="#" onClick="func();">link</a>').appendTo('#container');
      });
    </script>
  </head>

  <body>
    <div id="container"></div>
  </body>
</html>

但在您的情况下,最好在 javascript 中绑定(bind)事件:

$.each(data, function (key, val) {
  // ... some code
  var td11 = $('<input type="button" value="Edit">')
    .click(edit)
    .attr('name', val.Id);

  $(tr2).append(td11);
  $(table1).append(tr2);
});

关于JavaScript 错误 : Uncaught ReferenceError: edit is not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12234193/

相关文章:

javascript - 如何设置元素相对于屏幕尺寸的高度

javascript - Twitter Bootstrap 选项卡显示事件未在页面加载时触发

javascript - 使用 .reduce 为每个名字求和点

jquery - 文本溢出 : ellipsis is not working for input in IE but working fine in other

javascript - 使用 HTML 热点管理旋转部分

javascript - 包含ajax后加载js文件

javascript - 使用 Javascript/JQuery 将表单提交的数据保存到 CSV 文件

c# - 如何从平面列表构建嵌套 HTML 列表

python - 在 python 中的 xml 或 html 文件的标签之间获取数据的简单方法?

jquery - 操作除当前单击的元素之外的所有元素