在Native JS中向下滚动innerHTML函数
Scroll Down on innerHTML function in Native JS
我目前正在进行一个不允许jQuery的项目,而且我对JavaScript和OO编程还很陌生(两周)。您可以在以下回购中看到整个项目:https://github.com/Sntax/jsChat/blob/master/script.js
基本上,我正在创建一个简单的聊天应用程序作为一个学习项目。我正在使用在Click或Enter/Tab上将HTML注入div
var jsChat = {
username: document.getElementById('username'),
comment: document.getElementById('comment'),
output: document.getElementById('output'),
};
function postData(){
jsChat.output.innerHTML += '<div class="username">' + jsChat.username.value + ':' + '</div>';
jsChat.output.innerHTML += '<div class="comment">' + jsChat.comment.value + '</div>';
clearContent();
}
现在它将成功打印到div,但一旦"注释"对于div高度来说太长,它们将自动滚动到页面底部,看不见。我想设置一种方法,强制滚动到div的底部,这样它就可以像普通聊天应用程序一样,将旧的聊天评论从屏幕顶部滚动出来。
Ninja Edit:我尝试将以下内容放入postData()函数中,但没有成功:
jsChat.output.scrollTop = 99999;
您可以使用scrollTo
函数,如下所示:
window.scrollTo(DOMNodeOfMyNewMessage.offsetTop,window.scrollY);
这将把最新的信息滚动到屏幕顶部。
但是,您;I’我可能想把页面滚动到新评论的高度。使用scrollBy
函数和元素’s offsetHeight
:
window.scrollBy(DOMNodeOfMyNewMessage.offsetHeight, window.scrollY);
最后的代码可能看起来有点像以下内容:
var jsChat = {
username: document.getElementById('username'),
comment: document.getElementById('comment'),
output: document.getElementById('output'),
},
latestMessage;//DOM Node of my new message
function postData(){
latestMessage = document.createElement('div');
latestMessage.innerHTML = '<div class="username">' + jsChat.username.value + ':</div>' +
'<div class="comment">' + jsChat.comment.value + '</div>';
clearContent();//Not sure what this does, check if you still need it with this code
latestMessage = jsChat.output.appendChild(latestMessage);// appendChild: see https://developer.mozilla.org/docs/Web/API/Node.appendChild
//Now we scroll the message into view
window.scrollBy(latestMessage.offsetHeight, window.scrollY);
}
将注释发布到输出后:
var last_comment_index = jsChat.comment.length - 1;
jsChat.output.scrollTop = jsChat.comment[last_comment_index].offsetTop;
这将滚动到最后一条评论。希望能有所帮助。
相关文章:
- 幻灯片滚动javascript不起作用
- 将视口底部滚动到元素底部
- jQuery Lazy加载动画滚动
- 转义符不能与innerHTML一起使用
- 设置滑块分区上的滚动
- 结合jQuery和jetpack无限滚动
- 单击顶部导航时如何进行向下滚动效果(向下滑动).
- 滚动到容器中的下一个元素-几乎到了
- 只覆盖箭头键滚动事件
- Javascript如何找到滚动事件的来源
- Image赢得't隐藏在滚动jQuery上
- Safari(Mac OS)上的jQuery平滑滚动问题
- CSS-若窗口太小,滚动条会出现在“表格”单元格上
- 使用元素的值与innerHTML
- 不再使用innerHTML进行AJAX响应.(代码未得到响应)
- 禁用(而不是隐藏)浏览器滚动条
- JavaScript上下滚动不可预测
- 在Native JS中向下滚动innerHTML函数
- 滚动调整在非ie浏览器加载图像(JavaScript/DOM)后不能正常工作;定时问题w/innerHTML
- innerHTML 会导致 Chrome 中出现不必要的滚动