用js动态插入HTML标签时的一点注意的地方

本文探讨使用JavaScript动态插入input元素并设置事件监听的问题。作者尝试通过appendChild和insertAdjacentHTML方法实现,但遇到了事件不触发及属性设置失效的情况,最终采用结合两种方法的方式解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这两天在学习js,发现一个问题,我在用appendChild动态插入一个input type=text标签时,发现不能设置这个文本框所响应的事件,代码是这样写的:
            var oTextInDiv         = document.createElement("input");
            oTextInDiv.type     
= "text";
            oTextInDiv.id        
= "textInDivId";
            oTextInDiv.width    
= width - 5;
            oTextInDiv.height    
= height - 5;
            oTextInDiv.onblur    
= "removeChildDiv(this)";
            childDiv.appendChild(oTextInDiv);
当所创建的文本框失去焦点时,一直都不执行"removeChildDiv(this)"方法。

然后我选择用insertAdjacentHTML方法插入一段HTML代码:
            var inputString = "<INPUT id=textInDivId onblur='removeChildDiv(this)' width='100px' height='30px'/>";
            childDiv.insertAdjacentHTML(
"afterBegin", inputString);
这样"removeChildDiv(this)"方法是执行了,但是新的问题又出现了,这样插入的方式我设置的属性又不起作用了,无语...

没有办法,只能把两个方法配合起来用:
            var inputString = "<INPUT id=textInDivId onblur='removeChildDiv(this)'>";
            childDiv.insertAdjacentHTML(
"afterBegin", inputString);
            
            
var textBox     = document.getElementById("textInDivId");
            textBox.height     
= height - 6;
            textBox.width    
= width - 6;
不知道是我什么地方操作有问题,还是DHTML本来就是这个特性,不知道还有没有什么更好的方法,希望各位大虾指教。



 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值