javascript - 滚动到底部不起作用,但滚动到行的正上方(scrollHeight 未正确更新)
问题描述
我想要什么:只要通过ng-keypress
点击“输入”添加新的引脚名称行,滚动条就会自动滚动到底部。
问题:栏可以自动滚动,但只会滚动到行的正上方,这意味着我仍然需要手动向下滚动才能看到新添加的行
我的想法:所以这scrollTop = scrollHeight - clientHeight;
对我来说很有意义。我已经看到了一些关于这个使用的答案scrollTop = scrollHeight;
,但我保留了我在这里的内容,因为在我手动滚动到底部之后,滚动条位于我想要的位置,我控制台记录了scrollTop
,scrollHeight
和clientHeight
, 和他们遵循这个等式。但是当我在控制台记录这些属性时scrollTop = scrollHeight - clientHeight;
,scrollHeight
将减少 35 像素。这是由某些offsetHeight
或错误的更新位置引起的scrollTop
吗?
HTML
<input type="text" id="add-new-pin-name-text" placeholder="Add Terminal(Pin) Name" data-lift="LocAttr?locId=sc_addPinsName&attr=placeholder" ng-model="newPinName" ng-keypress="newPinNameKeyPress($event)" id="add-pin" maxlength="40">
打字稿
$scope.newPinNameKeyPress = function(e) {
var pinNameListContainer = document.getElementById("listings-pins-container");
if (e.keyCode === 13) {
$scope.addNewPin();
if (pinNameListContainer){
pinNameListContainer.scrollTop = pinNameListContainer.scrollHeight - pinNameListContainer.clientHeight;
}
}
};
$scope.addNewPin = function() {
var element = document.getElementById("add-new-pin-name-text");
if(($scope.newPinName === "") || /\s/g.test($scope.newPinName)) {
if(element){
element.blur();
}
return $rootScope.$emit('GenericError', i18n.symc_empty_pin_name);
} else {
$rootScope.$emit('AddNewPin', [{pinName:$scope.newPinName, pinNumber:""}]); // if this part's logic is needed, please let me know
// I've tried to put "pinNameListContainer.scrollTop = pinNameListContainer.scrollHeight - pinNameListContainer.clientHeight;" here as well and it did the same thing
return $scope.newPinName = "";
}
};
解决方案
推荐阅读
- mysql - ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册
- c - “静态”关键字如何影响计算?
- c++ - 如何从 c++ winrt UWP 应用程序中的代码将文本添加到 RichTextBlock,
- amazon-web-services - Amazon S3 存储桶缓存清除
- node.js - 使用 Express 和 node.js 在响应中发送换行符
- java - 为什么 Spring Boot 不从默认的 application.properties 文件中读取
- javascript - 使用 Javascript 更改列表项的边距
- javascript - 如何在 Reactjs 的地图中使用 JS Include 和 Replace?
- linux - sudo su - 紧接在 SSH 之后
- http - Nginx - 访问 Http 自定义标头 v2