我使用 javascript 和 ajax 制作了自己的自动完成功能。一切都很好,但我有一个主要问题:定位。我目前正在像这样定位列表:
function ajaxautocomplete(elm)
{
lista.innerHTML="";
var x=getOffset(elm).left;
var y=getOffset(elm).top;
lista.style.position="absolute";
lista.style.left=(x+5)+"px";
lista.style.top=(y+25)+"px";
...
}
其中“lista”是我的自动完成列表,“elm”是当前的文本输入。现在,我有一个将文本输入作为单元格的表格,它们需要具有此自动完成功能。此定位有效,但如果表格足够大并且需要滚动,当我向下滚动页面并尝试自动完成底部的单元格时,定位不再起作用,并且我的列表出现在页面顶部的某个位置,如果我滚动得足够多,可能会超出屏幕。
任何想法,即使我滚动页面,我如何动态地为该列表分配一个位置?谢谢!
编辑:我忘了提,这是我的 getOffset(elm) 函数:
function getOffset( el ) {
var _x = 0;
var _y = 0;
while( el && !isNaN( el.offsetLeft ) && !isNaN( el.offsetTop ) ) {
_x += el.offsetLeft - el.scrollLeft;
_y += el.offsetTop - el.scrollTop;
el = el.offsetParent;
}
return { top: _y, left: _x };
}