1, 应用场景
在某个html页面显示一批数据,如20个用户的名称、年龄等,每行都要一个编辑按钮,点击编辑后,将此行数据带入某个专门的编辑页进行显示,修改后保存。
问题是 点击编辑按钮后,如何得知要编辑的是哪行数据?
2, 采用隐藏的信息栏传送行号信息
本人采用在编辑栏<td>中嵌入隐藏的span信息实现,如下:
<table> <tr> <th>行号</th><th>车场名称</th><th>地址</th><th>申请人</th><th>申请人电话</th><th>审核操作</th> </tr> <tr ng-repeat="car in cars" ng-class-even="'tr-even'"> <td>{{car.rowNum}}</td><td>{{car.ParkName}}</td><td>{{car.Address}}</td> <td>{{car.OPT}}</td><td>{{car.Tel}}</td> <td><button onclick="DoCheck(this.innerText);">审核<span style="display: none;">{{car.rowNum}}</span></button> </td> </tr> </table>
在处理函数中,分析参数,取出行号
function DoCheck(rowNumText){ //rowNumText形如: 审核1,审核2。。。 CurrRow = parseInt(substring(rowNumText,2))-1; ... }
3,浏览器兼容问题
以上代码在IE中运行良好,但到了chrome中,发现取不出行号。参数this.innerText,只含有“审核”二字,不返回隐藏的行号。
为此,将innerText改为innerHTML,处理函数改为:
function DoCheck(rowNumText){ //rowNumText形如:审核<span class="ng-binding" style="display: none;">1</span> var sub_string = rowNumText.substring(8,100); var index1 = sub_string.indexOf('>'); var index2 = sub_string.indexOf('<'); CurrRow = parseInt(sub_string.substr(index1+1,index2-index1-1))-1; 。。。。 }
以上代码在IE和chrome均正常运行。