自定义控件的 position: relative;的定位问题。

zhangweitaylor 2014-05-14 10:39:17

通过INPUT和IMG实现一个弹出选择窗口的功能。效果如上图所示。objEdit是一个INPUT控件。
popIcon 是控件中的图片;
之前的代码,
//弹出窗体按钮
function CreatePopIcon(objEdit)
{
if (objEdit == null) return;


var popIcon=document.createElement("<IMG alt=\"\" src=\"" + _popImage + "\" style=\"Z-INDEX: 999; POSITION: absolute; display:none;\" fi_attrib=\"fi_popIcon\" border=0"+
" onclick=\" return _popIcon_onclick();\" oncontextmenu=\"_popIcon_menu(); return false;\">");

objEdit.parentNode.appendChild(popIcon);

popIcon.setAttribute("editor", objEdit);

if (objEdit.fi_arrow=="false")
{
_popIcon=popIcon;
}
else
{
popIcon.style.display='';
}
}
上面的代码在IE7和8或者IE10兼容模式下,没有问题,但在其他浏览器下显示就会出错。所以做了调整。
//弹出窗体按钮
function CreatePopIcon(objEdit)
{
if (objEdit == null) return;
//获取objEdit坐标
var w = objEdit.offsetWidth - 20;
var h = 5-1*objEdit.offsetHeight;

var popIcon = document.createElement("IMG");
popIcon.setAttribute("src", _popImage);
popIcon.src= _popImage;
popIcon.editor = objEdit;
//通过坐标,定义popIcon位置
popIcon.style.cssText = "z-index: 999; position: relative; display:none;left:" + w + ";top:" + h + ";";
popIcon.setAttribute("fi_attrib", "fi_popIcon");
popIcon.setAttribute("border", "0");
popIcon.setAttribute("onclick", "return _popIcon_onclick();");
popIcon.setAttribute("oncontextmenu", "_popIcon_menu(); return false;");



objEdit.parentNode.appendChild(popIcon);

if (objEdit.fi_arrow=="false")
{
_popIcon=popIcon;
}
else
{
popIcon.style.display='';
}
}
但问题出现了,popIcon的位置无法定位。跳来跳去。请大家帮忙看下,如何解决定位问题,谢谢。
...全文
134 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangweitaylor 2014-06-23
  • 打赏
  • 举报
回复
后来找到问题的原因了。确实如zyl_lyr1019 所讲,另有一个地方实现的定位。
张运领 2014-05-14
  • 打赏
  • 举报
回复
无法确定是个什么意思? 有其他方法在控制这个元素的定位值?
popIcon.style.cssText = "z-index: 999; position: relative; display:none;left:" + w + "px;top:" + h + "px;";
这个地方加上个单位吧。

87,916

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧