当层遇到下拉框时

在IE环境下,层遇到下拉框时总会出现层被下拉框所挡住的情形,这是怎么回事呢?这是IE的一个bug(其它浏览器没有这个问题),下拉框是个web control,其优先级很高,一般的控件无法在其上方,为解决此问题,总结了以下几种常用方法:
隐藏下拉框(最常用方法)
以下是代码片段:
<!--StartFragment--><script language="JavaScript">
<!--
/*
 *    要显示某个层时调用HideElements(oDiv)
 *    隐藏某个层时调用ShowElements()
 */
/*
 * 隐藏下拉框函数
 */
function HideElements(el) 
{
    if (!window.__temp__) window.__temp__ = new Array();
    var o = ["select","iframe","applet","object"];
    for (var i=0; i<o.length; i++) 
    {
        var elms = document.getElementsByTagName(o[i]);
        for (var j=0; j<elms.length; j++) 
        {
            var p = getPosition(elms[j]);
            var e = getPosition(el);
            if (e.left + e.width > p.left && e.left < p.left + p.width &&
                e.top + e.height > p.top && e.top < p.top + p.height) 
            {
                window.__temp__[j] = elms[j];
                elms[j].style.visibility = "hidden";
            }
        }
    }
    function getPosition(el) 
    {
        var e = el.offsetParent, x = el.offsetLeft, y = el.offsetTop;
        while (e.tagName != 'BODY') 
        {
            x += e.offsetLeft;
            y += e.offsetTop;
            e = e.offsetParent;
        }
        return {
            "left":        x,
            "top":        y,
            "width":    el.offsetWidth,
            "height":    el.offsetHeight
        }
    };
};
/*
 * 显示下拉框
 */
function ShowElements() 
{
    var t = window.__temp__;
    if (t) {
        for (var i=0; i<t.length; i++) 
        {
            t[i].style.visibility = "visible";
        }
    }
};    

//-->
</script>    
用iframe为载体(实用)
以下是代码片段:
<!--StartFragment--><div οnclick="show()">onclick test</div>
<div id="demo" style="position:absolute;width:100;height:100;z-index:9999;visibility:hidden"></div>
<select style="width:150px"><option>see me ?</option></select>
<script language="JavaScript">
<!--
var i=0;
var ie = document.all ? 1 : 0;
var o = document.getElementById("demo");
var w = o.offsetWidth;
var h = o.offsetHeight;
if (ie)
    o.innerHTML = '<iframe name="WebFrame" frameborder=0 width="' + w + 
                 '" height="' + h + '" marginwidth=0 marginheight=0></iframe>';
function show() 
{
    var str = '<div style="border:1px solid;width:' + w + 'px;height=' + h + 'px">hello</div>'
    if (ie) {
        var doc = window.frames["WebFrame"].document;
        doc.open();
        doc.write('<html><head></head><body>' + str + '</body></html>');
        doc.close();
    } else {
        o.innerHTML = str;
    }
    o.style.visibility = ++i%2 ? 'visible' : 'hidden';
};
//-->
</script>
popup方法(需IE5.5+)
以下是代码片段:

<!--StartFragment--><script language="JavaScript">
<!--
var oPopup = window.createPopup();
oPopup.document.body.innerHTML = 'New Window';
oPopup.show(100, 100, 200, 200, oPopup.document);
/*
 * window.createPopup产生的窗口可以跨载框架,更不用说下拉框了,但其使用有一定的限制,并不推荐使用
 */
//-->
</script>
在Vue中,当使用v-model动态渲染select下拉框,可能会遇到下拉框显示为空白的问题。这是因为select标签必须要有一个值才能正常显示,而默认情况下v-model绑定的变量是没有值的。因此,需要给v-model绑定的变量赋一个初始值,例如将select的初始值设置为空字符串。\[2\] 另外,还有两种解决方法可以解决这个问题。第一种方法是使用Vue的$set方法来为动态新增的属性赋值。在change事件中,可以使用this.$set来为inquire对象的selectData属性赋值,这样可以实现select下拉框选择后赋值成功并显示选中的值。\[3\] 第二种方法是使用forceUpdate方法来强制刷新render函数。如果下拉框的数据是从其他接口获取的,并且数据层次较深,render函数可能无法自动更新,需要手动强制刷新。在select的change事件中,可以加上this.$forceUpdate()来强制刷新,这样就可以解决选中值不显示的问题。需要注意的是,forceUpdate只会影响实例本身和插入插槽的子组件,而不是所有子组件。\[3\] 综上所述,解决Vue隐藏select下拉框的问题可以通过给v-model绑定的变量赋初始值,使用$set方法为动态新增的属性赋值,或者使用forceUpdate方法强制刷新render函数。 #### 引用[.reference_title] - *1* *2* [(详解)Vue设置select下拉框的默认选项(解决select空白的bug)](https://blog.csdn.net/Andye11/article/details/126933085)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [vue中el-select下拉框 选择后赋值成功 但是下拉选框上不显示选中的值的解决办法](https://blog.csdn.net/weixin_44900104/article/details/126348729)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值