我有一个表格,允许我单击一个项目并更改值。为了针对旧版浏览器(IE8)进行优化,我更改了表格的绘制方式:附加 <td>
每次都连接一个字符串,然后一次附加所有项目。但是,在我的新字符串追加中,附加函数不会被调用。
这是我有效的代码片段:
$('<td>', {
'text': value,
'class': 'editableCell',
'data-hd': currentCell.hd,
'data-cl': currentCell.cl,
'click': editFunction
}).appendTo(tr_body);
我将其更改为:
tableString += '<td class="selectable" data-hd="' + currentCell.hd+ '" data-cl="' + currentCell.cl+ '" onclick="editFunction()">' + value + '</td>';
现在,当我单击该元素时,我会得到 Uncaught ReferenceError: blurEdit is not defined
任何想法第一个 click: editFunction
之间有什么区别?第二个 onclick='editFunction()'
?
功能是:
var editFunction= function () {
$(this).off();
var value = $(this).text();
var inp = $('<input>', {
'type': 'text',
'value': value,
'class': 'form-control',
'blur': blurEdit
});
$(this).html(inp);
inp.focus();
};
所以它已经走到了这一步,然后由于模糊编辑功能尚未更改而失败。
最佳答案
Any ideas what the difference is between the first click: editFunction and the second onclick='editFunction()'?
将对函数的引用(从当前作用域链)分配给事件处理程序。
另一个创建一个新函数,尝试在不同的作用域链中按名称访问上述函数(内部事件处理程序作用域,类似于“onclick 函数本身、元素对象的属性、窗口”) 。
返回第一个方法。它比尝试通过将字符串粉碎在一起来创建 HTML 更干净、更安全。
关于javascript - Onclick 函数未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24533967/