IE里input元素type为checkbox与radio的checked=true失效

在IE中使用DOM动态创建input元素时,发现无法通过编程方式为checkbox和radio设置checked属性。解决方案包括在创建时构建完整的属性字符串或者使用innerHTML方式设置属性。
摘要由CSDN通过智能技术生成

   在IE中使用DOM方式来动态创建页面元素的时候,我发现了一些问题。记录于此,如果您有好的意见欢迎提供,如果您也遇到此问题,希望能有助你解决。

    对于动态HTML编程,IE实现了两套模型:一套是以操作innerHTML为主的狭义的DHTML,一套是以集合方式操作(appendChild)页面元素对象的DOM(Document Object Model)。DHTML方式(我本文说的DHTML都默认指的对于innerHTML进行操作的编程方式,不是广义的DHTML。)直接操作html代码片断,主要靠Web程序员使用字符串拼接来生成页面元素,这是一种高效的动态页面操作方式,不过似乎少些编程逻辑的味道,代码中往往散布着大量不完整的html代码片断。而DOM方式进行动态页面编程,在逻辑上是一种对集合和元素对象的操作,编程逻辑比较清晰,不过效率上有一些差别。具体使用什么方式来实现动态Web页面,大多数情况下是个人的喜好问题,除非在效率上必须锱铢必较。

    使用DOM,最常用的方法就是document.createElement(sTag),sTag是一个合法的html标签名字(tagName)。我们创建好一个html元素对象后,对它的属性进行赋值,然后insertBefore或appendChild到页面的DOM对象树中。这里msdn提醒了几个注意事项:

    1、不能通过编程方式动态创建frame和iframe元素(IE 5.0及以下);
    2、input元素被创建后默认

你所提供的代码已经是一个表格行(`<tr>`)了,如果你想添加多行,可以在表格中添加多个类似的行,每个行中的复选框可以设置不同的 `name` 属性值,这样就可以在表单提交时分别获取各个复选框的值。同时,可以通过 jQuery 实现全选或取消全选的功能,具体的实现方法可以参考我之前回答的问题。下面是示例代码: HTML: ```html <table> <tr> <td>爱好</td> <td> <input name="like" type="checkbox" value="0" checked="true">读书 <input name="like" type="checkbox" value="1" checked="true">听歌 <input name="like" type="checkbox" value="2">手游 <input name="like" type="checkbox" value="3">体育 <input name="all" type="checkbox" value="0">全选 </td> </tr> <tr> <td>兴趣爱好</td> <td> <input name="interest" type="checkbox" value="0" checked="true">旅游 <input name="interest" type="checkbox" value="1" checked="true">美食 <input name="interest" type="checkbox" value="2">摄影 <input name="interest" type="checkbox" value="3">绘画 <input name="all" type="checkbox" value="1">全选 </td> </tr> </table> ``` JavaScript: ```javascript $(function() { // 给全选复选框绑定 click 事件 $('input[name="all"]').on('click', function() { var $items = $(this).closest('td').find('input[type="checkbox"]'); $items.prop('checked', $(this).prop('checked')); }); }); ``` 这样,当用户点击任意一个全选复选框时,就可以实现对该行中所有复选框的全选或取消全选操作了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值