分享
 
 
 

当层遇到下拉框(select)框时的解决方法

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

当层遇到下拉框时总是挡不了select框?其实这是IE的BUG,其它的浏览器没有这个问题,对于这个问题论坛里不少提出,在这里提供我的几种方法,各有各的好处,有错,有好的意见者提出,谢谢.

1.最直接的方法:隐藏下拉框.

下面提供的是一个比较通用的一组函数:

test.htm

------------

<script>

var HideElementTemp = new Array();

//点击菜单时,调用此的函数,菜单对象

function cal_hideElementAll(obj){

cal_HideElement("IMG",obj);

cal_HideElement("SELECT",obj);

cal_HideElement("OBJECT",obj);

cal_HideElement("IFRAME",obj);

}

function cal_HideElement(strElementTagName,obj){

try{

var showDivElement = obj;

var calendarDiv = obj;

var intDivLeft = cal_GetOffsetLeft(showDivElement);

var intDivTop = cal_GetOffsetTop(showDivElement);//+showDivElement.offsetHeight;

//HideElementTemp=new Array()

for(i=0;i<window.document.all.tags(strElementTagName).length; i++){

var objTemp = window.document.all.tags(strElementTagName)[i];

if(!objTemp||!objTemp.offsetParent)

continue;

var intObjLeft=cal_GetOffsetLeft(objTemp);

var intObjTop=cal_GetOffsetTop(objTemp);

if(((intObjLeft+objTemp.clientWidth)>intDivLeft)&&

(intObjLeft<intDivLeft+calendarDiv.style.posWidth)&&

(intObjTop+objTemp.clientHeight>intDivTop)&&

(intObjTop<intDivTop+calendarDiv.style.posHeight)){

//var intTempIndex=HideElementTemp.length;//已经有的长度

//save elementTagName is stutas

//HideElementTemp[intTempIndex]=new Array(objTemp,objTemp.style.visibility);

HideElementTemp[HideElementTemp.length]=objTemp

objTemp.style.visibility="hidden";

}

}

}catch(e){alert(e.message)

}

}

function cal_ShowElement(){

var i;

for(i=0;i<HideElementTemp.length; i++){

var objTemp = HideElementTemp[i]

if(!objTemp||!objTemp.offsetParent)

continue;

objTemp.style.visibility=''

}

HideElementTemp=new Array();

}

function cal_GetOffsetLeft(src){

var set=0;

if(src && src.name!="divMain"){

if (src.offsetParent){

set+=src.offsetLeft+cal_GetOffsetLeft(src.offsetParent);

}

if(src.tagName.toUpperCase()!="BODY"){

var x=parseInt(src.scrollLeft,10);

if(!isNaN(x))

set-=x;

}

}

return set;

}

function cal_GetOffsetTop(src){

var set=0;

if(src && src.name!="divMain"){

if (src.offsetParent){

set+=src.offsetTop+cal_GetOffsetTop(src.offsetParent);

}

if(src.tagName.toUpperCase()!="BODY"){

var y=parseInt(src.scrollTop,10);

if(!isNaN(y))

set-=y;

}

}

return set;

}

</script>

<select></select>

<select></select>

<div style="position:absolute;left:0;top:0;width:100;height:100;background-color:red" onclick="cal_hideElementAll(this)">

点击让select隐藏

</div>

<br><br><br><br><br><br>

<input type="button" value="点击让select显示" onclick="cal_ShowElement()">

以上这种方法,如果对于select框数目少,相对固定的话,直接用obj.style.visibility="hidden"这样进行隐藏是更直接的.

2.Object对象的优先度较高,可以挡住select框

<OBJECT id=aa style="display:none;z-index:1000; position:absolute; top:0; left:0; width:152; height: 200;" type="text/x-scriptlet" data="about:<body><div style='position:absolute;left:0;top:0;width:152;height:200;font:14;color:white;background:black;border:1 solid black'>test</div>"></OBJECT>

<select><option>hellohellohellohello</select><button onclick=aa.style.display=aa.style.display=="none"?"":"none">test</button>

这种方法虽然也简单,但对复杂的层是来说还不是好的解决方法

3.用iframe作载体

以下是一简单的例子:

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<meta name="GENERATOR" content="Microsoft FrontPage 4.0">

<meta name="ProgId" content="FrontPage.Editor.Document">

<title>简单菜单</title>

<!--

提供定位函数,用iframe作载体,不会被select挡住

-->

<style id=s>

#div1{

position:absolute;

z-index:100;

width:100;

height:130;

background-color:#d2e8ff;

border:1 solid black;

}

div{cursor:hand;font-size:12px;}

a{text-decoration:none;color:red;font-size:12px}

</style>

</head>

<body>

<script>

function window.onload(){

var shtml=div1.innerHTML;

var ifm=document.createElement("<iframe frameborder=0 marginheight=0 marginwidth=0 hspace=0 vspace=0 scrolling=no></iframe>")

ifm.style.width=div1.offsetWidth

ifm.style.height=div1.offsetHeight

ifm.name=ifm.uniqueID

div1.innerHTML=""

div1.appendChild(ifm)

window.frames[ifm.name].document.write(s.outerHTML+"<body leftmargin=0 topmargin=0>"+shtml+"</body>")

}

function show(){

with(document.all.img1){

x=offsetLeft;

y=offsetTop;

objParent=offsetParent;

while(objParent.tagName.toUpperCase()!= "BODY"){

x+=objParent.offsetLeft;

y+=objParent.offsetTop;

objParent = objParent.offsetParent;

}

y+=offsetHeight-1

}

with(document.all.div1.style){

pixelLeft=x

pixelTop=y

visibility=''

}

}

function hide(){

document.all.div1.style.visibility='hidden'

}

</script>

<img id=img1 onmouseover="show()" onmouseout="hide()" src="ie.gif"><br><select></select>

<div id=div1 onmouseover="style.visibility=''" onmouseout="style.visibility='hidden'" style="visibility:hidden;">

<div href="http://www.csdn.net" onmouseover="style.backgroundColor='highlight'" onmouseout="style.backgroundColor=''" onclick="window.open(href)">中国程序员</div>

<div href="http://www.webjx.com" onmouseover="style.backgroundColor='highlight'" onmouseout="style.backgroundColor=''" onclick="window.open(href)">webjx</div>

</div>

</body>

</html>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有