我在网上搜的脚本,以前应用时没有问题,现在IE8以及升级后的360都出现以下问题,
1、下拉框在鼠标滑过时,如果内容长度非常长,会把IE撑开。
2、附上脚本:
function FixWidth(selectObj) {
//创建一个新的select
var newSelectObj = document.createElement("select");
newSelectObj = selectObj.cloneNode(true);
newSelectObj.selectedIndex = selectObj.selectedIndex;
newSelectObj.onmouseover = null; var e = selectObj;
var absTop = e.offsetTop;
var absLeft = e.offsetLeft;
while (e = e.offsetParent) {
absTop += e.offsetTop;
absLeft += e.offsetLeft;
} var len = selectObj.options.length;
var wid = "80px";
var text1;
for (var i = 0; i < len; i++) {
text1 = selectObj.options[i].text;
if (fucCheckLength(text1) > 7) {
wid = "auto";
break;
}
} with (newSelectObj.style) {
position = "absolute";
top = absTop + "px";
left = absLeft + "px";
var w = parseInt(width.substring(0, 2));
width = wid;
} var rollback = function() {
RollbackWidth(selectObj, newSelectObj);
}; if (window.addEventListener) {
newSelectObj.addEventListener("blur", rollback, false);
newSelectObj.addEventListener("change", rollback, false);
}
else {
newSelectObj.attachEvent("onblur", rollback);
newSelectObj.attachEvent("onchange", rollback);
}
selectObj.style.visibility = "hidden";
document.body.appendChild(newSelectObj);
newSelectObj.focus();
}function RollbackWidth(selectObj, newSelectObj) {
selectObj.selectedIndex = newSelectObj.selectedIndex;
selectObj.style.visibility = "visible";
document.body.removeChild(newSelectObj);
}function fucCheckLength(strTemp) {
var i, sum;
sum = 0;
for (i = 0; i < strTemp.length; i++) {
if ((strTemp.charCodeAt(i) >= 0) && (strTemp.charCodeAt(i) <= 255))
sum = sum + 1;
else
sum = sum + 2;
}
return sum;
} 3、我分数不多,全给了,望大虾们指点~~~
1、下拉框在鼠标滑过时,如果内容长度非常长,会把IE撑开。
2、附上脚本:
function FixWidth(selectObj) {
//创建一个新的select
var newSelectObj = document.createElement("select");
newSelectObj = selectObj.cloneNode(true);
newSelectObj.selectedIndex = selectObj.selectedIndex;
newSelectObj.onmouseover = null; var e = selectObj;
var absTop = e.offsetTop;
var absLeft = e.offsetLeft;
while (e = e.offsetParent) {
absTop += e.offsetTop;
absLeft += e.offsetLeft;
} var len = selectObj.options.length;
var wid = "80px";
var text1;
for (var i = 0; i < len; i++) {
text1 = selectObj.options[i].text;
if (fucCheckLength(text1) > 7) {
wid = "auto";
break;
}
} with (newSelectObj.style) {
position = "absolute";
top = absTop + "px";
left = absLeft + "px";
var w = parseInt(width.substring(0, 2));
width = wid;
} var rollback = function() {
RollbackWidth(selectObj, newSelectObj);
}; if (window.addEventListener) {
newSelectObj.addEventListener("blur", rollback, false);
newSelectObj.addEventListener("change", rollback, false);
}
else {
newSelectObj.attachEvent("onblur", rollback);
newSelectObj.attachEvent("onchange", rollback);
}
selectObj.style.visibility = "hidden";
document.body.appendChild(newSelectObj);
newSelectObj.focus();
}function RollbackWidth(selectObj, newSelectObj) {
selectObj.selectedIndex = newSelectObj.selectedIndex;
selectObj.style.visibility = "visible";
document.body.removeChild(newSelectObj);
}function fucCheckLength(strTemp) {
var i, sum;
sum = 0;
for (i = 0; i < strTemp.length; i++) {
if ((strTemp.charCodeAt(i) >= 0) && (strTemp.charCodeAt(i) <= 255))
sum = sum + 1;
else
sum = sum + 2;
}
return sum;
} 3、我分数不多,全给了,望大虾们指点~~~
解决方案 »
- Jquery筛选出数据,将不合适的数据隐藏
- Grid 数据刷新
- 关于JS内存泄露问题,我找到了一个处理方法,可是运行速度超级慢,有人能帮我出个点子吗?
- DIV+CSS布局问题
- 我用DIV做的文本滚动 DIV我设了10000px长度,不知道有没有更好的办法
- 分类弹出小分类代码求助?
- attachEvent传参数问题
- 如何自定义cursor的图形?我想用一个小图片来代替默认的cursor。
- 页面内有两个框架,分别为leftFrame 和mainFrame,leftFrame中有form1. mainFrame用于显示以form1传来的数据查出的数据,即如何在两个框
- 请教:如何在浏览器中点击鼠标右键能够显示出自己的菜单?
- 百度的编辑器ueditor修改宽度
- 大家帮我看下我的JS,怎么让结果在最后输出,
function FixWidth(selectObj) {
// 显示下拉框隐藏部分内容
var newSelectObj = document.createElement("select");
newSelectObj = selectObj.cloneNode(true);
newSelectObj.selectedIndex = selectObj.selectedIndex;
newSelectObj.id = "newSelectObj"; var e = selectObj;
var absTop = e.offsetTop;
var absLeft = e.offsetLeft;
while (e = e.offsetParent) {
absTop += e.offsetTop;
absLeft += e.offsetLeft;
} with (newSelectObj.style) {
position = "absolute";
top = absTop + "px";
left = absLeft + "px";
width = "auto"; } var rollback = function() { RollbackWidth(selectObj, newSelectObj); }; if (window.addEventListener) {
newSelectObj.addEventListener("blur", rollback, false);
newSelectObj.addEventListener("change", rollback, false);
}
else {
newSelectObj.attachEvent("onblur", rollback);
newSelectObj.attachEvent("onchange", rollback);
} selectObj.style.visibility = "hidden";
document.body.appendChild(newSelectObj); var newDiv = document.createElement("divselect");
with (newDiv.style) {
width = "0px";
height = "0px";
position = "absolute";
top = (absTop - 10) + "px";
left = (absLeft - 10) + "px";
width = newSelectObj.offsetWidth + 20;
height = newSelectObj.offsetHeight + 20; ;
background = "transparent"; } newSelectObj.focus();
var enterSel = "false";
var enter = function() { enterSel = enterSelect(); };
newSelectObj.onmouseover = enter; var leavDiv = "false";
var leave = function() { leavDiv = leaveNewDiv(selectObj, newSelectObj, newDiv, enterSel); };
newDiv.onmouseleave = leave;
}function RollbackWidth(selectObj, newSelectObj) {
selectObj.selectedIndex = newSelectObj.selectedIndex;
selectObj.style.visibility = "visible";
if (document.getElementById("newSelectObj") != null) {
document.body.removeChild(newSelectObj);
}
}function removeNewDiv(newDiv) {
document.body.removeChild(newDiv);
}function enterSelect() {
return "true";
}function leaveNewDiv(selectObj, newSelectObj, newDiv, enterSel) {
if (enterSel == "true") {
RollbackWidth(selectObj, newSelectObj);
removeNewDiv(newDiv);
}
}