给html标签中的onclick事件传递变量值,传值过程中值产生变化
需求:删除表格中的一行,点击删除,会删除当前的一行记录,
思路:获取到当前行的主键id值,因为然后根据主键删除。
实现:每个td上绑定onclick事件,然后给onclick事件里面绑定id值
不正确代码如下:
for (var i = 0; i < list.length-1; i++) { var user = list[i].split("|"); user_info ="<tr>" +" <td>"+"<input type=\"checkbox\" />"+"</td>" +" <td>"+user[2]+"</td>" +" <td>"+user[1]+"</td>" +"<td id='editor'>"+"<img src=\"../imgs/set.png\">"+"</td>" +"<td onclick=\"deleteUser("+user[0]+" )\">"+"<img src=\"../imgs/delete.png\">"+"</td>" +"</tr>"+user[0]; $("#user_list").append(user_info); }
然后用一个函数接收
function deleteUser(flag) { alert(flag); var user_id=flag; var paras = "user_id=" + user_id; var status = new Array(); var result = function () { if(status[0] == "ok"){ alert("注销用户成功"); $("#user_list tr:not(:first)").empty(""); userList(); }else{ alert('注销用户失败'); } } console.log(paras); getFromWS("user/deleteUsers.template",paras,status,result); }
其实这样写是有效果的,能接受到传过来的值,
比如上图这样,值传过来了,但是问题是值变了!变了!变了!重要的问题说三遍,一开始测试老是删除成功,但是页面没有变化,我就奇了怪了,但先在值变了,就更纳闷了,这么一点的空间距离你是肿么了。后来网上查了一波,发现好多把值写成字符串的形式,我就试了下,发现是对的。这个地方的原理有点不太明白。但是结果出来了还是倍感欣慰的。这个地方还有一个重要的问题是单双引号的问题,巨坑。好了,不多说了,得去赶进度了。