关于td中加A标签绑定事件所犯的错误

1 篇文章 0 订阅

说实话其实自己敲的代码实在是很差,同组的大家都在用jquery的时候我还是在一行一行吭哧吭哧的敲js。

在写给一个表格动态添加一个td,给td中添加两个a标签,给a绑定onclick事件。一个a是删除,另一个弹出修改弹框。

这种效果:
最后一列既是js中生成的元素 删除是oA 修改是oA2

```
    var oTd1 = document.createElement('td');//动态创建一个td
    var oA = document.createElement('a');//动态创建一个a链接
    oA.href = 'javascript:;';
    oA.innerHTML = '<i class="fa fa-trash-o cur-p"><i>';//奥森图标
    oA.onclick = function(){//给a绑定onclick事件 弹出弹框后输出本行
        var r=confirm("确定删除吗?")
        if(r != true){
            return;
        }
        else{            
            oTab.children[0].removeChild(this.
        parentNode.parentNode);
        }
    }
    oTd1.appendChild(oA);// 注意此句!把创建的a加入生成的td1中

    oTd1.innerHTML += '  /  ';//引起错误的代码!!!

//生成第二个a标签加入同一个td内
var oA2 = document.createElement('a');
    oA2.href = 'javascript:;';
    oA2.innerHTML = '<i class="fa fa-edit cur-p"><i>';
    oA2.onclick = function modify(){//修改函数
    //此处代码省略
}


    oTd1.appendChild(oA2);//a2加入td1中
    aTr[i].appendChild(oTd1);//将td1插入本行末尾位置

这样写出的代码,最后效果是点击第一个a没有触发onclick事件,但第二个a可以正常执行绑定事件。
错误在于 oTd1.innerHTML += ’ / ‘;
这样会导致给oA绑定的onclick事件失效,使a变成单纯的innerHTML内容。

这个bug调整了好久。。。和小伙伴找了半天都没找到,没人想到错误会是一句大家都没注意到的代码。
后来我是调整了两个a的创建、绑定代码顺序,发现无论哪个a,只要代码放在前面它的函数就不执行了,才想到是这句大家都忽略的代码出了问题。。
心累。

可算是改好了。
不过为了追求这种视觉效果,只能也用创建元素的方法加上这个该死的“/”

调整后的代码:

var oOr =document.createElement('span');
oOr.innerHTML = '  /  ';  
……
oTd1.appendChild(oA);
oTd1.appendChild(oOr);  //把这一句加在添加两个a之间
oTd1.appendChild(oA2);
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值