js table动态添加input onchange事件失效问题

天黑了天亮了 2018-05-29 03:58:29
let table = document.getElementById("table");
let oneRow = table.insertRow();
let cell= oneRow.insertCell();
cell.innerHTML = "<input onchange='this.onInputChange'/>";
...全文
1839 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
天黑了天亮了 2018-05-30
  • 打赏
  • 举报
回复
天黑了天亮了 2018-05-30
  • 打赏
  • 举报
回复
我之前就试过了,用html5写一个确实没问题,但是在js文件里面写就有问题,好像是innerhtml导致onchange失效,各位有没有办法解决一下
Logerlink 2018-05-30
  • 打赏
  • 举报
回复
你应该是用对象写法吧 试试换成这样的 用对象指向方法名,而不是用this
文盲老顾 2018-05-30
  • 打赏
  • 举报
回复
onchange事件触发时,this指向的是控件本身,如果你要引用类中定义的方法,不要加上完整的类路径,或者
let table = document.getElementById("table");
    let oneRow = table.insertRow();
    let cell= oneRow.insertCell();
    var input = document.createElement('input');
    cell.appendChild(input);
    input.onchange = this.onInputChange;  // 这个时候的this是在做的js片段对应的this
Hello World, 2018-05-30
  • 打赏
  • 举报
回复
this.onInputChange,这里this是window,有没有定义onInputChange这个function?
Logerlink 2018-05-30
  • 打赏
  • 举报
回复
引用 2 楼 m0_37686934 的回复:
这样的话onInputChange这个方法会undefined

没有吧 你是怎样写的呢??? 我这样写是没有问题的
天际的海浪 2018-05-30
  • 打赏
  • 举报
回复
在html标签中设置的事件,事件代码中的this表示当前触发事件的DOM元素,不是你的那个对象
  • 打赏
  • 举报
回复
是不是因为你的onInputChange方法定义在动态生成input之后?
天际的海浪 2018-05-29
  • 打赏
  • 举报
回复
onInputChange是什么?
天黑了天亮了 2018-05-29
  • 打赏
  • 举报
回复
这样的话onInputChange这个方法会undefined
Logerlink 2018-05-29
  • 打赏
  • 举报
回复
cell.innerHTML = "<input onchange='this.onInputChange'/>"; 换成 cell.innerHTML = "<input onchange='onInputChange()'/>"; 而且 onchange需要input 失去焦点才会触发

87,955

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧