gpt4 book ai didi

javascript - 在固定高度的多个表格中自动滚动

转载 作者:行者123 更新时间:2023-11-29 17:46:07 25 4
gpt4 key购买 nike

我可以将自动滚动添加到固定高度的单个表格:

function scrollDiv_init() {
DivElmnt = document.getElementById('tableDiv');
ReachedMaxScroll = false;

DivElmnt.scrollTop = 0;
PreviousScrollTop = 0;

ScrollInterval = setInterval('scrollDiv()', ScrollRate);
}

function scrollDiv() {

if (!ReachedMaxScroll) {
DivElmnt.scrollTop = PreviousScrollTop;
PreviousScrollTop++;

ReachedMaxScroll = DivElmnt.scrollTop >= (DivElmnt.scrollHeight - DivElmnt.offsetHeight);
}
else {
ReachedMaxScroll = (DivElmnt.scrollTop == 0)?false:true;

DivElmnt.scrollTop = PreviousScrollTop;
PreviousScrollTop--;
}
}

但是,我在屏幕上有多个表,这些表是在运行时生成的。如果表体超过固定大小,其中一些需要自动滚动。我可以通过它的 id 引用表来实现在一个表中的自动滚动,但我不确定如何在多个表的情况下实现这一点。

https://codepen.io/shubh2gupta/pen/WzdXpj这几乎没有固定高度的 table 。表 1 启用了自动滚动,但我不确定如何让它也适用于其他表。我希望它们在数据溢出时自动滚动。

function scrollDiv_init() {
DivElmnt = document.getElementById('tableDiv');
ReachedMaxScroll = false;

DivElmnt.scrollTop = 0;
PreviousScrollTop = 0;
ScrollRate =100;
ScrollInterval = setInterval('scrollDiv()', ScrollRate);
}

function scrollDiv() {

if (!ReachedMaxScroll) {
DivElmnt.scrollTop = PreviousScrollTop;
PreviousScrollTop++;

ReachedMaxScroll = DivElmnt.scrollTop >= (DivElmnt.scrollHeight - DivElmnt.offsetHeight);
}
else {
ReachedMaxScroll = (DivElmnt.scrollTop == 0)?false:true;

DivElmnt.scrollTop = PreviousScrollTop;
PreviousScrollTop--;
}
}
.scrollable{
height:150px;
width:200px;
overflow-y:auto;
}

.inlineT{
outline: 1px solid blue;
display: inline-block;
}
<body onload="scrollDiv_init()">
<div id="bodyDiv">

<div id = "tableDiv" class="scrollable inlineT">
<strong>Table1</strong>
<table>
<tbody>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
</tbody>
</table>
</div>


<div id = "tableDiv" class="scrollable inlineT">
<strong>Table2</strong>
<table>
<tbody>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
</tbody>
</table>
</div>


<div id = "tableDiv" class="scrollable inlineT">
<strong>Table3</strong>
<table>
<tbody>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
</tbody>
</table>
</div>


<div id = "tableDiv" class="scrollable inlineT">
<strong>Table4</strong>
<table>
<tbody>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
</tbody>
</table>
</div>


<div id = "tableDiv" class="scrollable inlineT">
<strong>Table5</strong>
<table>
<tbody>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
</tbody>
</table>
</div>


<div id = "tableDiv" class="scrollable inlineT">
<strong>Table6</strong>
<table>
<tbody>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>

</tbody>
</table>
</div>


<div id = "tableDiv" class="scrollable inlineT">
<strong>Table7</strong>
<table>
<tbody>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
</tbody>
</table>
</div>


<div id = "tableDiv" class="scrollable inlineT">
<strong>Table8</strong>
<table>
<tbody>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>

</tbody>
</table>
</div>

</div>
</body>

最佳答案

我已经将大部分代码放入名为 scrolly 的对象中。然后为包含类 '.tableDiv' 的每个元素创建一个实例并调用 scrolly 函数 scrollInterval()

希望对您有所帮助。

var scrolly = function(element){
this.element = element
this.reachedMaxScroll = false;
this.scrollTop = 0;
this.previousScrollTop = 0;
this.scrollRate =100;

this.scrollInterval = function(){
setInterval(
(function(){
this.scrollDiv()
}).bind(this),
this.scrollRate
)
};

this.scrollDiv = function(){
if (!this.reachedMaxScroll) {
this.element.scrollTop = this.previousScrollTop;
this.previousScrollTop++;

this.reachedMaxScroll = this.element.scrollTop >= (this.element.scrollHeight - this.element.offsetHeight);
} else {
this.reachedMaxScroll = (this.element.scrollTop == 0)?false:true;

this.element.scrollTop = this.previousScrollTop;
this.previousScrollTop--;
}
};
};

var divElements = document.querySelectorAll('.tableDiv');
divElements.forEach(function(element){
new scrolly(element).scrollInterval();
});
.scrollable{
height:150px;
width:200px;
overflow-y:auto;
}

.inlineT{
outline: 1px solid blue;
display: inline-block;
}
<div id="bodyDiv">

<div class="tableDiv scrollable inlineT">
<strong>Table1</strong>
<table>
<tbody>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
</tbody>
</table>
</div>


<div class="tableDiv scrollable inlineT">
<strong>Table2</strong>
<table>
<tbody>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
</tbody>
</table>
</div>


<div class="tableDiv scrollable inlineT">
<strong>Table3</strong>
<table>
<tbody>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
</tbody>
</table>
</div>


<div class="tableDiv scrollable inlineT">
<strong>Table4</strong>
<table>
<tbody>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
</tbody>
</table>
</div>


<div class="tableDiv scrollable inlineT">
<strong>Table5</strong>
<table>
<tbody>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
</tbody>
</table>
</div>


<div class="tableDiv scrollable inlineT">
<strong>Table6</strong>
<table>
<tbody>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>

</tbody>
</table>
</div>


<div class="tableDiv scrollable inlineT">
<strong>Table7</strong>
<table>
<tbody>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
</tbody>
</table>
</div>


<div class="tableDiv scrollable inlineT">
<strong>Table8</strong>
<table>
<tbody>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>
<tr><td >NAME </td><td>TYPE </td><td>QUANT</td></tr>

</tbody>
</table>
</div>

</div>

关于javascript - 在固定高度的多个表格中自动滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49527900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com