IE6使用add方法添加optGroup的bug

本文探讨了在JavaScript中使用optGroup元素时遇到的问题,特别是在IE浏览器中的DOM操作问题。作者通过对比两种不同的DOM操作方法,即使用add方法与appendChild方法,揭示了IE浏览器中的一个bug,并给出了正确的解决方案。
    合理的使用optGroup元素,可以极大地增强select下拉列表框的表现能力。我是比较喜欢在select中使用optGroup做数据分类的,不过不知道微软搞什么飞机,就这么一个html标签bug还真是不少。刚才又在使用DOM操作select添加optGroup时发现了问题。

    如下简单的代码,我们会得到什么结果呢?
< select  id ="slt1" >
</ select >
< script  language ="javascript" >
document.body.onload 
= function()
{
    
for ( var i=0 ; i < 3 ; ++i )
    
{
        
var group = document.createElement('OPTGROUP');
        group.label 
= 'group 1-+ i;  
        slt1.add(group);
    }

}
;   
</ script >

    按我们对select的add方法的理解,似乎应该得到分组列表框:
  • ,但实际上我们得到的列表框却是:
  • 。为什么会是第二种情况呢 ?那么我们来看看IE DOM操作后生成的Html到底是什么呢?
    < SELECT  id =slt1 >
        
    < OPTGROUP  label ="group 1-0" >
            
    < OPTGROUP  label ="group 1-2" >
            
    </ OPTGROUP >
            
    < OPTGROUP  label ="group 1-1" >
            
    </ OPTGROUP >
    </ SELECT >

        这是什么东东啊?optGroup怎么又嵌到optGroup里面去了?optGroup不支持mutli-hierarhical呀!

        原来我们必须改用通用的DOM操作方式,即使用appendChild(element)方法才能获得正确的select列表的分组结构,示例代码如下:
    < select  id ="slt2" >
    </ select >
    < script  language ="javascript" >
    document.body.onload 
    = function()
    {
       
    for ( var i=0 ; i < 3 ; ++i )
       
    {
           
    var group = document.createElement('OPTGROUP');
           group.label 
    = 'group 2-+ i;
           slt2.appendChild(group);
       }

    }
    ;   
    </ script >

        至于add方法的问题,只能算作optGroup的又一个bug了:(

        相关文章: 在使用optgroup时遇到的缺陷与修复
     
  • 评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值