【发布时间】:2010-12-14 20:02:55
【问题描述】:
我有两个 JS 函数,一个是向选择框添加选项
function addOption(selectId, text, value) {
var selectbox = document.getElementById(selectId);
var optNew = document.createElement('option');
optNew.text = text;
optNew.value = value;
try {
selectbox.add(optNew, null); //page position resets after this
}
catch(ex) {
selectbox.add(optNew);
}
}
另一个在类似简单的函数中执行 document.getElementById(formId).appendChild(newHiddenInput)。
它们都有效,元素按预期添加。但是,在调用其中任何一个时,页面将其滚动位置重置为 IE6 和 FF 中的页面顶部。没有回发,这纯粹是客户端操作。我在 Firebug 中设置了断点,它在 element.appendChild 或 select.add 执行后立即发生。我知道我可以使用 JS 手动设置滚动位置,但我认为在不重新渲染页面时没有必要。
我不是 JS 或 DOM 方面的专家,所以我很可能遗漏了一些东西,但我查看了 here 并使用 Try it Here 选项浏览了他们的示例,但我无法复制问题,表明我正在使用的代码库是罪魁祸首。
任何想法为什么要重置滚动位置?如果 jQuery 提供了更好的选择,我也可以使用 jQuery。
【问题讨论】:
标签: javascript html dom scroll