checkBox的选中问题
1. checkBox的选中和checkBox标签的checked属性的关系:当有checked属性时,即被选中,否则,未选中。 checked属性的值对是否选中没有关系(有少数浏览器可以通过设置checked属性值来改变checkBox的选中, 我个 人推荐以下方法)。
2. js控制checkBox的选中,设置对应dom的属性(不是checkBox标签的属性):domObj.checked=true即选中,
domObj.checked=false即未选中。
3. jquery控制checkBox的选中,通过prop方法设置对应dom的属性:$domObj.prop("checked",true)即选中,
$domObj.prop("checked",false)即未选中。
4. 如果要获取checkBox是否被选中的信息,参考以上两种设置属性的方法:domObj.checked或者 $domObj.prop("checked")。
radio的选中问题
radio和checkBox在选中这个问题上的性质是一样的,所以参考上面对checkBox的总结:
select
1.和大多数程序语言中对数组下标的设计一样,option的索引是从0开始的。
2.js获取选中项的索引:selectObj.selectedIndex,而selectObj.getAttribute("selectedIndex")在chrome中返回null, 在IE中返回索引数字。
3.jquery获取选中项的索引:$selectObj.prop("selectedIndex")。
4.如果要动态设置某一项被选中,参考方式2和3,更新dom对象的selectedIndex属性即可。
5.若要预定义某项被选中,只需要在对应的option中加入selected,如下:
<option selected>1</option>
其他实现方式更繁琐,也更容易引起兼容性问题。
6.为了便于动态适应各种场合,应该尽量选择jquery来维护dom的属性,毕竟它可以接收一个变量作为属性名,由此可以设计出更 优雅的程序。
对以上问题的总结:
1.页面初始化完成后,dom对象的外观属性和其标签html内容之间,有一部分已经没有关系了,单纯的用js改变html
内容,并不能影响到dom的属性。
2.页面初始化完成后,应该通过js获取dom,直接操作dom的属性,而不要getAttribute()或者attr()这两种方式,前者 是js获取标签属性的方法,后者是jquery获取标签属性的方法。
3.jquery的attr()和prop()方法的区别:
attr是获取或者设置html标签的属性,通过其设置属性时,可以看到标签的html内容改变了。
prop是获取或者设置dom对象的属性,通过其设置属性时,可以看到标签的html内容并没有改变,但是其真实呈 现的外观变了。
难道说attr就是废物了吗?其实不是,可以通过attr可以将一些标签需要携带的信息,通过设置属性的方式动态添 加到标签的html内容上,这样,当别的程序读取标签内容时,就会看到这些属性了。具体应用前面提到的jquery分页中有提到。