日期:2014-05-17 浏览次数:21016 次

//下拉框选项所对应的层的名字
var SELECT_DIV="SELECT_DIV_";
//注释层的名字
var NODE_DIV="NODE_DIV_";
var textObject;
//焦点是否在选择层上:初始时为false,表示默认不在选择层上
//主要防止鼠标点击选择项时,文本框会失去焦点,这样选择层就会跟着隐藏,此时还未
//让点击的选择项选中并赋值到文本框中去。此时可以设置鼠标在选择层上时cursorInSelectDivObj=ture
//这时点击时不会立即隐藏选择层,等选中后再设置cursorInSelectDivObj=false,此时就可以隐藏选择层了
var cursorInSelectDivObj=false;
//是否是ie浏览器
var ie=(document.getElementById && document.all);
//全局的注释数组
var noteArr = new Array();
//以防名字已存在,循环取名,先判断是否存在"Textselectshow_Div"的对象,
//如果存在,则重新取名为"Textselectshow_Div1",如果"Textselectshow_Div1"
//还是存在,则取名为"Textselectshow_Div2",依次类推:"Textselectshow_Div..."
for(var i=0;document.getElementById(SELECT_DIV)!=null;i++){
var tmpNm = SELECT_DIV + i;
//如果存在同名的,则以重新取名为 Textselectshow_Div + i ,如果Textselectshow_Div + i
//存在,则循环取名为 Textselectshow_Div + i + 1,直到不重名为止。如果存在,则赋值为本身再循环
SELECT_DIV=(document.getElementById(tmpNm)==null)?tmpNm:SELECT_DIV;
}
//以同样的命名方式为注释层取名
for(var i=0;document.getElementById(NODE_DIV)!=null;i++){
var tmpNm = NODE_DIV + i;
NODE_DIV=(document.getElementById(tmpNm)==null)?tmpNm:NODE_DIV;
}
//为隐藏下拉框创建一个对应的层,并且刚初始化时为隐藏的
document.write ('<div id="' + SELECT_DIV + '" style="position: absolute;'
+ 'cursor: default;border: 1px solid #B2B2B2;background-color: #fff;display: none;"></div>')
//同样方式创建一个注释层
document.write ('<div id="' + NODE_DIV + '" style="position: absolute;'
+ 'cursor: default;border: 1px solid #B2B2B2;background-color:#ffffd9;display: none;'
+ 'overflow-x:auto;word-wrap:break-word"></div>')
// 获取某对象的坐标
function getObjPosition(Obj){
try{
var sumTop=0;
var sumLeft=0;
while(Obj!=window.document.body){
sumTop+=Obj.offsetTop;
sumLeft+=Obj.offsetLeft;
Obj=Obj.offsetParent;
}
return {left:sumLeft,top:sumTop};
}catch(e){alert(e);}
}
//处理Div中的选项/* 某个选项,文本框的ID */
function optionDivOnmouseover(optionDivObj,textId){
//文本框
var textObj=document.getElementById(textId);
//optionDivObj.parentNode为某select option选项所对应层的父对象,即SELECT_DIV层
//得到select下拉框所有option选项所对应的层
var objChilddiv=optionDivObj.parentNode.getElementsByTagName("div");
//清空所有选项层的样式,即去掉原来背景为蓝色的选项层的样式
for(var i=0; i < objChilddiv.length; i++){
objChilddiv[i].style.cssText='';
}
//使本身选项层的背景为蓝色,字为白色,模拟选中样式
optionDivObj.style.cssText='background-color: #330066;color: #ffffff;'
var noteDivObj =document.getElementById(NODE_DIV);
var selectDivObj =document.getElementById(SELECT_DIV);
///////设置注释层中的选项及位置
setNoteDivObj(textObj,optionDivObj,selectDivObj,noteDivObj);
//点击某个选项层时
optionDivObj.onclick=function(){
//点击选项后选择层后要隐藏,即要设置成失去焦点状态
cursorInSelectDivObj=false;
//把选中的某选项层的内容赋值为文本框
if(ie){
textObj.value=optionDivObj.outerText;
}
else
{
textObj.value=optionDivObj.textContent;
}
//var noteDivObj =document.getElementById(NODE_DIV);
//点击某个选项层时,对应的注释层也要隐藏
noteDivObj.style.display='none';