zoukankan      html  css  js  c++  java
  • IE不支持option的display样式,只能使用remove和add

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="yue-Hans" lang="yue-Hans">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=gbk" />
        <title>it works..............</title>
    </head>
    <body>
    <form action="./" method="get">
        <dl>
            <dt>发布者</dt>
            <dd>
                <select name="q_role" onchange="role_change_type();">
                    <option value="company">中介</option>
                    <option value="person">个人</option>
                </select>
                <select name="q_type">
                    <option value="sale">出售</option>
                    <option value="lease">出租</option>
                    <option value="buy" style="display:none">求购</option>
                    <option value="hire" style="display:none">求租</option>
                </select>
            </dd>
        </dl>
    </form>
    </body>
    </html>

    想实现一个很简单的功能:当选中“中介”时,不显示“求购”与“求租”。本以为通过display:none即可实现,结果发现在option元素上使用display:none在firefox中有效,在IE6、IE7、IE8中都无效。

     

     

     所以,通过javascript设置display:none也是在IE中无效,代码如下:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="yue-Hans" lang="yue-Hans">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=gbk" />
        <title>it works..............</title>
    </head>
    <body>
    <form action="./" method="get">
        <dl>
            <dt>发布者</dt>
            <dd>
                <select name="q_role" onchange="role_change_type();">
                    <option value="company">中介</option>
                    <option value="person">个人</option>
                </select>
                <select name="q_type">
                    <option value="sale">出售</option>
                    <option value="lease">出租</option>
                    <option value="buy">求购</option>
                    <option value="hire">求租</option>
                </select>
            </dd>
        </dl>
        <script type="text/javascript">
        function role_change_type()
        {
            var q_role=document.getElementsByName("q_role");
            var q_type=document.getElementsByName("q_type");
            var q_type_option=q_type[0].getElementsByTagName("option");
            if(q_role[0].value=='company')
            {
                if(q_type[0].value=='buy'||q_type[0].value=='hire')
                {
                    q_type[0].value='sale';
                }
                for(var i=0;i!=q_type_option.length;i++)
                {
                    if(q_type_option[i].value=="buy"||q_type_option[i].value=="hire")
                    {
                        q_type_option[i].style.display="none";
                        
                    }
                }
            }
            if(q_role[0].value=='person')
            {
                for(var i=0;i!=q_type_option.length;i++)
                {
                    q_type_option[i].style.display="";
                }
            }
        }
        role_change_type();
        </script>
    </form>
    </body>
    </html>

    所以,只能通过select元素的remove和add方法,当选中“中介” 时,把“求租”和“求购”删除。代码如下:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="yue-Hans" lang="yue-Hans">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=gbk" />
        <title>it works..............</title>
    </head>
    <body>
    <form action="./" method="get">
        <dl>
            <dt>发布者</dt>
            <dd>
                <select name="q_role" onchange="role_change_type();">
                    <option value="company">中介</option>
                    <option value="person">个人</option>
                </select>
                <select name="q_type">
                    <option value="sale">出售</option>
                    <option value="lease">出租</option>
                    <option value="buy">求购</option>
                    <option value="hire">求租</option>
                </select>
            </dd>
        </dl>
        <script type="text/javascript">
        var q_role=document.getElementsByName("q_role");
        var q_type=document.getElementsByName("q_type");
        var q_type_option=q_type[0].getElementsByTagName("option");
        alert(q_role[0].value)
        if(q_role[0].value=='company')
        {
            q_type[0].remove(3)
            q_type[0].remove(2)
        }
        function role_change_type()
        {
            if(q_role[0].value=='company')
            {
                q_type[0].remove(3)
                q_type[0].remove(2)
            }
            if(q_role[0].value=='person')
            {
                var x=document.createElement('option');
                x.text='求购';
                x.value='buy';
                var y=document.createElement('option');
                y.text='求租';
                y.value='hire';
                try
                {
                q_type[0].add(x,null);
                q_type[0].add(y,null); // standards compliant
                }
                catch(ex)
                {
                q_type[0].add(x);
                q_type[0].add(y); // IE only
                }
            }
        }
        </script>
    </form>
    </body>
    </html>

    这样在IE和firefox中都有效了。真费解啊,IE8竟然还不支持option的display:none 。

     上面的代码还有一个问题:在IE7和IE8中 选中“个人”,然后刷新,将导致“求租”和“求购”被删除。在IE6和firefox3.5.5中正常。

  • 相关阅读:
    A1023 Have Fun with Numbers (20分)(大整数四则运算)
    A1096 Consecutive Factors (20分)(质数分解)
    A1078 Hashing (25分)(哈希表、平方探测法)
    A1015 Reversible Primes (20分)(素数判断,进制转换)
    A1081 Rational Sum (20分)
    A1088 Rational Arithmetic (20分)
    A1049 Counting Ones (30分)
    A1008 Elevator (20分)
    A1059 Prime Factors (25分)
    A1155 Heap Paths (30分)
  • 原文地址:https://www.cnblogs.com/sink_cup/p/ie_option_display_none_select_remove_add_html_dom.html
Copyright © 2011-2022 走看看