【发布时间】:2011-04-11 12:52:30
【问题描述】:
我有一个包含一系列问题和答案的 HTML 文档。
每个问题都包含在一个 div 中。每个答案都包含在一个 div 中。每个答案都有一个唯一的 ID。
每个答案的 CSS 样式设置为“无”,以便最初隐藏元素。
当一个Question被点击时,div将对应Answer的id传递给这个函数:
function toggle(id) {
var state = document.getElementById(id).style.display;
if (state == 'block') {
document.getElementById(id).style.display = 'none';
} else {
document.getElementById(id).style.display = 'block';
}
}
(这会切换 Answer div 的外观。)
问题:如果滚动条位于默认(顶部)位置,此机制在 Safari 中运行良好。否则,这将导致滚动条重置为默认位置,从而有效地破坏了这种机制在长页面上的实用性。
问。有什么方法可以防止滚动条位置被重置?
谢谢。
【问题讨论】:
-
题外话:
getElementById不是免费操作。在您的toggle函数中建议您只查找元素一次,而不是两次。 -
你点击
<a href="#">的问题是偶然的吗? -
@mu 太短:这也是我的想法。
-
@mu_is_too_short,是的,你是对的。它确实是一个。哎呀。 (感谢大家的帮助!)但是,如果我删除了 href,则问题不再看起来或不再像链接一样(例如,鼠标悬停时光标不会变为手形)。你能建议我如何保持这种行为吗?
-
@T.J.克劳德,谢谢。我会做出改变。
标签: javascript html safari scrollbar