offsetParent.scrollTop не работает в большинстве браузеров - PullRequest
0 голосов
/ 22 декабря 2011

Я что-то не так делаю? Похоже, это работает только в IE, хотя я не вижу того, чего ожидаю от других.

<div id="test" style="height:4em;overflow:scroll;">
one<br />two<br />three<br />four<br />five<br />six<br />seven<br />eight<br />nine<br />ten<br />
<b id="item1">I should come into view!</b>
</div>
<script><!--
document.getElementById("item1").offsetParent.scrollTop=1000;
//--></script>

(пожалуйста, не отвечайте , почему бы вам не использовать "test" , потому что это упрощенный пример, демонстрирующий, что у меня есть проблема с использованием offsetParent)

Ответы [ 2 ]

4 голосов
/ 22 декабря 2011

Просто прочитав документацию на offsetParent и посмотрев, что происходит в Chrome и Firefox, довольно ясно, что offsetParent устанавливается на элемент <body>, а ваш div с id="test" непозиционируется.

Если вы добавите position: relative к вашему контейнеру div, он выберет его как offsetParent и будет работать правильно.Я не знаю, если это исправление, которое вы ищете, но оно работает.

Альтернатива, конечно, использует .parentElement вместо offsetParent, в зависимости от вашего варианта использования.

0 голосов
/ 22 декабря 2011

использование document.getElementById("item1").parentElement.scrollTop = 1000

смещение parent не предназначено для поиска родительского элемента узла, а «ближайшая ячейка таблицы или корневой элемент», который в вашем случае является тегом <body>. См. MDN Doc для offsetParent

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...