当层遇到了select框时

select

当层遇到下拉框时总是挡不了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挡住
By Fason(2003-5-21)
-->
<style id=s>
#div1{
pos

时间: 2024-11-10 07:12:22

当层遇到了select框时的相关文章

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

select|解决|下拉 当层遇到下拉框时总是挡不了select框?其实这是IE的BUG,其它的浏览器没有这个问题,对于这个问题论坛里不少提出,在这里提供我的几种方法,各有各的好处,有错,有好的意见者提出,谢谢. 1.最直接的方法:隐藏下拉框. 下面提供的是一个比较通用的一组函数: test.htm ------------ <script>var HideElementTemp = new Array();//点击菜单时,调用此的函数,菜单对象function cal_hideElement

AlertBox 弹出层(信息提示框)效果

弹出层(弹窗)就是相对文档或窗口定位的一个层,一般用来显示提示信息.广告等内容,还可以配合覆盖层来锁定页面. 在仿Lightbox效果中,已经基本实现了这个效果,这次主要改进了ie6在fixed时的抖动问题. 此外,还增加了一个用来兼容ie6的fixed的方法,覆盖层也重新"包装",程序也改成组件的结构. 兼容:ie6/7/8, firefox 3.6.8, opera 10.6, safari 5.0.1, chrome 5.0 效果预览 覆盖select测试   程序说明 [实现原

我的echarts地图主题不能修改是怎么回事啊?点击下拉框时地图没效果,也不刷新??????

问题描述 我的echarts地图主题不能修改是怎么回事啊?点击下拉框时地图没效果,也不刷新?????? 解决方案 <!DOCTYPE html> <head> <meta charset="utf-8"> <title>ECharts</title> <script> var myChart; function changeTheme(self){ //var te = require('echarts/theme

鼠标焦点离开文本框时验证的js代码

本文为大家介绍下利用js来验证文本框的值,当鼠标焦点离开文本框时进行验证,示例代码如下,感兴趣的朋友可以参考下哈,希望对大家有所帮助   利用js来验证文本框的值 复制代码 代码如下: <script> function onblurs(){ if(frm.name.value==""){ alert("请输入您的名字!"); }else if(frm.funny.value==""){ alert("爱好不得为空哦!&qu

js实现文本框中输入文字页面中div层同步获取文本框内容的方法

 这篇文章主要介绍了js实现文本框中输入文字页面中div层同步获取文本框内容的方法,实例分析了javascript操作dom元素的技巧,需要的朋友可以参考下     本文实例讲述了js实现文本框中输入文字页面中div层同步获取文本框内容的方法.分享给大家供大家参考.具体实现方法如下:   代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/x

JS实现网页背景颜色与select框中颜色同时变化的方法

 这篇文章主要介绍了JS实现网页背景颜色与select框中颜色同时变化的方法,实例分析了javascript操作select及css样式的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了JS实现网页背景颜色与select框中颜色同时变化的方法.分享给大家供大家参考.具体实现方法如下:   代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www

91-jsp中,点击文本框后面显示删除按钮,点击其他文本框时删除按钮消失

问题描述 jsp中,点击文本框后面显示删除按钮,点击其他文本框时删除按钮消失 解决方案 好吧,楼主自己已经搞定了,本帖结束 解决方案二: 解决方案三: 解决方案四: 如第2张图所示,点击radio后的text按钮时(这里value初始值为男/女),在文本框后显示一个 删除按钮,点击删除按钮可以把整行都删除,这个已经实现. 当你点击下一个文本框时,上一个文本框的删除图标会消失/删除.你所点击的文本框后面会显示删除按钮(男的后面已经没有了,女的后面显示删除按钮) 当你再次点击男所在的文本框时,女的删

access-多个列表框时第一行数据消失

问题描述 多个列表框时第一行数据消失 当vb界面有多个列表框时,运行程序时这两个列表框的有关数据第一行会消失,而其他行的数据任然存在

你好,有没有人知不知道,怎么实现在一张背景图上画矩形框时后面的背景图不受影响?

问题描述 你好,有没有人知不知道,怎么实现在一张背景图上画矩形框时后面的背景图不受影响? 就是类似于windows画图工具的矩形选择工具,平时在一个图上再画一个矩形时后面的图片背景会被覆盖掉.