js table表格自下而下不断循环

本文介绍如何使用JavaScript处理JSON数据,并在HTML表格中实现数据自下而下的不断循环显示,包括数据接收、静态页面和JavaScript循环操作的详细步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.json 数据格式接收循环

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >  
<html>  
<head>  
<title>table内容连续滚动</title>  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
<script type="text/javascript" src="js/jquery-3.4.1.min.js"></script>
<style type="text/css">  
* {padding: 0; margin: 0};  
td {height: 28px;}
</style>  
</head>  
<body bgcolor="#FFFFFF">  
<div id="demo3" style="padding-top: 100px;"></div>
<div id="demo1"></div>
<script type="text/javascript">  
	$(function() {
		$.ajax({
			type: "get",
			url: "employee.json",
			success: function(res) {
				//alert(JSON.stringify(res));
				var str = JSON.stringify(res);
				var data = JSON.parse(str); //转JSON对象
				var rowCount = data.rows.length; //获取行号
				var cellCount = data.columns.length; //获取列数
				total=data.total;
				var str = JSON.stringify(res);
				var data = JSON.parse(str); //转JSON对象
				var rowCount = data.rows.length; //获取行号
				var cellCount = data.columns.length; //获取列数
				
				//添加表头
				var table_H = $("<table width='600' border='1' align='center' cellpadding='0' cellspacing='0' bordercolor='4FBFF9'>"); //看不懂
				table_H.appendTo($("#demo3")); //追加到DIV
				var trHeader = $("<tr></tr>"); //看不懂
				trHeader.appendTo(table_H); //追加到table
				for(var j = 0; j < cellCount; j++) {
					var td = $("<td>" + data.columns[j].title + "</td>");
					td.appendTo(trHeader); //把信息追加到trHeader
				}
				$("#demo3").append("</table>");
						
				//添加内容
				var table_B = $("<table width='600' border='0' align='center' cellpadding='0' cellspacing='0' bordercolor='4FBFF9'>"); //看不懂
				table_B.appendTo($("#demo1"));
				var tbody = $("<tbody id='test'>");
				tbody.appendTo(table_B);
				for(var i = 0; i < rowCount; i++) {
					var tr = $("<tr></tr>");
					tr.appendTo(tbody);
					for(var j = 0; j < cellCount; j++) {
						var field = data.columns[j].field;
						var val = "";
						if(data.rows[i][field] != null) {
							val = data.rows[i][field];
						}
						var td = $("<td>" + val + "</td>");
						td.appendTo(tr);
					}
				}
				var trbody = $("</tbody>");
				trbody.appendTo(table_B);
				$("#demo1").append("</table>");
			}
		});
	})
	//先在table的最后增加一行,然后再把第一行中的数据填充到新增加的行中,最后再删除table的第一行
   function change(table){
      var row = table.insertRow(table.rows.length);//在table的最后增加一行,table.rows.length是表格的总行数
      for(j=0;j<table.rows[0].cells.length;j++){//循环第一行的所有单元格的数据,让其加到最后新加的一行数据中(注意下标是从0开始的)
         var cell = row.insertCell(j);//给新插入的行中添加单元格
         cell.height = "24px";//一个单元格的高度,跟css样式中的line-height高度一样
         cell.innerHTML = table.rows[0].cells[j].innerHTML;//设置新单元格的内容,这个根据需要,自己设置
      }
      table.deleteRow(0);//删除table的第一行
   };
   function tableInterval(){
      var table = document.getElementById("test");//获得表格
      change(table);//执行表格change函数,删除第一行,最后增加一行,类似行滚动
   };
   setInterval("tableInterval()",800);//每隔2秒执行一次change函数,相当于table在向上滚动一样
</script>  
</body>  
</html>

2.html静态页面循环

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<HEAD>
<TITLE>滚动表格</TITLE>
<!--css样式是锁定表头不动的-->
<style type="text/css"> 
    .table{
         width: 100%;
         left:30%;
         border-collapse:collapse; 
         border-spacing:0;
     }
     .fixedThead{
         display: block;
         width: 100%;
     }
     .scrollTbody{
         display: block;
         height: 316px;
         overflow: hidden;
         width: 100%;
     }
     .table td {
         width: 300px;
         border-bottom: #333 1px dashed;
         padding: 5px;
         background-color:#ddd;
     }
     .table th {
         width: 300px;
         border-bottom: #333 1px dashed;
         border-top: #333 1px dashed;
         padding: 5px;
         line-height:24px;
         background-color:#cfc;
     }
     .table tr{
         border-bottom: #333 1px dashed;
         line-height:24px;
         padding: 5px;
     }
     thead.fixedThead tr th:last-child {
         color:#FF0000;
     }
</style>
<SCRIPT LANGUAGE="JavaScript"> 
   //先在table的最后增加一行,然后再把第一行中的数据填充到新增加的行中,最后再删除table的第一行
   function change(table){
      var row = table.insertRow(table.rows.length);//在table的最后增加一行,table.rows.length是表格的总行数
      for(j=0;j<table.rows[0].cells.length;j++){//循环第一行的所有单元格的数据,让其加到最后新加的一行数据中(注意下标是从0开始的)
         var cell = row.insertCell(j);//给新插入的行中添加单元格
         cell.height = "24px";//一个单元格的高度,跟css样式中的line-height高度一样
         cell.innerHTML = table.rows[0].cells[j].innerHTML;//设置新单元格的内容,这个根据需要,自己设置
      }
      table.deleteRow(0);//删除table的第一行
   };
   function tableInterval(){
      var table = document.getElementById("test");//获得表格
      change(table);//执行表格change函数,删除第一行,最后增加一行,类似行滚动
   };
   setInterval("tableInterval()",800);//每隔2秒执行一次change函数,相当于table在向上滚动一样
</SCRIPT>
</HEAD>


<BODY align="center">
   <H1 style="font-color:blur;">滚动表格</H1>
   <table class="table" align="center">
      <thead class="fixedThead" align="center">
        <tr>
           <th>姓名</th><th>性别</th><th>年龄</th>
        </tr>
      </thead>
      <tbody  id="test" class="scrollTbody" align="center">
        <tr>
            <td>张三1</td><td>男</td><td>18</td>
        </tr>
        <tr>
            <td>李四2</td><td>男</td><td>20</td>
        </tr>
        <tr>
            <td>王昕3</td><td>女</td><td>19</td>
        </tr>
        <tr>
            <td>李佳4</td><td>女</td><td>21</td>
        </tr>
        <tr>
            <td>张三5</td><td>男</td><td>18</td>
        </tr>
        <tr>
            <td>李四6</td><td>男</td><td>20</td>
        </tr>
        <tr>
            <td>王昕7</td><td>女</td><td>19</td>
        </tr>
        <tr>
            <td>李佳8</td><td>女</td><td>21</td>
        </tr>
        <tr>
            <td>张三9</td><td>男</td><td>18</td>
        </tr>
        <tr>
            <td>李四10</td><td>男</td><td>20</td>
        </tr>
        <tr>
            <td>王昕11</td><td>女</td><td>19</td>
        </tr>
        <tr>
            <td>李佳12</td><td>女</td><td>21</td>
        </tr>
        <tr>
            <td>张三13</td><td>男</td><td>18</td>
        </tr>
        <tr>
            <td>李四14</td><td>男</td><td>20</td>
        </tr>
        <tr>
            <td>王昕15</td><td>女</td><td>19</td>
        </tr>
        <tr>
            <td>李佳16</td><td>女</td><td>21</td>
        </tr>
        <tr>
            <td>张三17</td><td>男</td><td>18</td>
        </tr>
        <tr>
            <td>李四18</td><td>男</td><td>20</td>
        </tr>
        <tr>
            <td>王昕19</td><td>女</td><td>19</td>
        </tr>
        <tr>
            <td>李佳20</td><td>女</td><td>21</td>
        </tr>
        <tr>
            <td>张三21</td><td>男</td><td>18</td>
        </tr>
        <tr>
            <td>李四22</td><td>男</td><td>20</td>
        </tr>
        <tr>
            <td>王昕23</td><td>女</td><td>19</td>
        </tr>
        <tr>
            <td>李佳24</td><td>女</td><td>21</td>
        </tr>
        <tr>
            <td>张三25</td><td>男</td><td>18</td>
        </tr>
        <tr>
            <td>李四26</td><td>男</td><td>20</td>
        </tr>
        <tr>
            <td>王昕27</td><td>女</td><td>19</td>
        </tr>
        <tr>
            <td>李佳28</td><td>女</td><td>21</td>
        </tr>
    </tbody>
   </table>
</BODY>
</HTML>

3.js json格式数据循环

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript" src="js/jquery-3.4.1.min.js"></script>
		<style>
			.tablebox {
				height: 500px;
				overflow: hidden;
				position: relative;
				width: 1000px;
				margin: 100px auto;
				background-color: rgba(6, 26, 103, 1);
			}
			
			.tbl-header {
				width: 100%;
				position: absolute;
				top: 0;
				left: 0;
				z-index: 999;
			}
			
			.tbl-body {
				width: 100%;
				position: absolute;
				top: 0;
				left: 0;
			}
			
			.tablebox table {
				width: 100%;
			}
			
			.tablebox table th,
			.tablebox table td {
				font-size: 24px;
				color: #7ca6f4;
				line-height: 45px;
				text-align: center;
			}
			
			.tablebox table tr th {
				background-color: #1f1f9c;
				cursor: pointer;
			}
			
			.tablebox table tr td {
				background-color: transparent;
			}
			
			.tbl-body tr:nth-child(even) td,
			.tbl-body1 tr:nth-child(even) td {
				background-color: rgba(31, 31, 156, .5);
			}
			
			.tablebox table tr td span,
			.tablebox table tr td span {
				font-size: 24px;
			}
		</style>
	</head>

	<body>
		<div class="tablebox">

			<div class="tbl-header">
				<table border="0" cellspacing="0" cellpadding="0">
					<thead>
						<tr>
							<th>排名</th>
							<th>地市</th>
							<th>销售收入(万元)</th>
							<th>同比(%)</th>
							<th>环比(%)</th>
							<th>销售计划(万元)</th>
							<th>计划完成率(%)</th>
						</tr>
					</thead>
					<tbody style="opacity:0;"></tbody>
				</table>
			</div>

			<div class="tbl-body">
				<table border="0" cellspacing="0" cellpadding="0">
					<thead>
						<tr>
							<th>排名</th>
							<th>地市</th>
							<th>销售收入(万元)</th>
							<th>同比(%)</th>
							<th>环比(%)</th>
							<th>销售计划(万元)</th>
							<th>计划完成率(%)</th>
						</tr>
					</thead>
					<tbody></tbody>
				</table>
			</div>
		</div>
		<script>
			var MyMarhq = '';
			clearInterval(MyMarhq);
			$('.tbl-body tbody').empty();
			$('.tbl-header tbody').empty();
			var str = '';
			var Items = [{
					"Ranking": "1",
					"City": "保定",
					"SaleIncome": "2506734.43",
					"SaleRough": "296071.96",
					"SalePlan": "7200000",
					"PlanFinish": "34.82",
					"TonOilincome": "264.15",
					"OilTransform": "29.62",
					"An": "53.00",
					"Mom": "-13.00"
				},
				{
					"Ranking": "2",
					"City": "沧州",
					"SaleIncome": "1425935.58",
					"SaleRough": "93717.83",
					"SalePlan": "3200000",
					"PlanFinish": "44.56",
					"TonOilincome": "366.59",
					"OilTransform": "11.23",
					"An": "65.00",
					"Mom": "43.00"
				},
				{
					"Ranking": "3",
					"City": "秦皇岛",
					"SaleIncome": "1372207.38",
					"SaleRough": "241071.82",
					"SalePlan": "3000000",
					"PlanFinish": "45.74",
					"TonOilincome": "342.32",
					"OilTransform": "6.61",
					"An": "34.00",
					"Mom": "7.00"
				},
				{
					"Ranking": "4",
					"City": "衡水",
					"SaleIncome": "972451.15",
					"SaleRough": "87638.60",
					"SalePlan": "2700000",
					"PlanFinish": "36.02",
					"TonOilincome": "246.03",
					"OilTransform": "11.56",
					"An": "15.00",
					"Mom": "-18.00"
				},
				{
					"Ranking": "5",
					"City": "石家庄",
					"SaleIncome": "939010.52",
					"SaleRough": "140217.37",
					"SalePlan": "7200000",
					"PlanFinish": "13.04",
					"TonOilincome": "139.44",
					"OilTransform": "19.23",
					"An": "-57.00",
					"Mom": "-48.00"
				},
				{
					"Ranking": "6",
					"City": "邢台",
					"SaleIncome": "774274.70",
					"SaleRough": "124693.90",
					"SalePlan": "3700000",
					"PlanFinish": "20.93",
					"TonOilincome": "138.87",
					"OilTransform": "9.44",
					"An": "-20.00",
					"Mom": "-44.00"
				},
				{
					"Ranking": "7",
					"City": "唐山",
					"SaleIncome": "680456.79",
					"SaleRough": "50542.14",
					"SalePlan": "3600000",
					"PlanFinish": "18.90",
					"TonOilincome": "243.60",
					"OilTransform": "16.95",
					"An": "-29.00",
					"Mom": "-49.00"
				},
				{
					"Ranking": "8",
					"City": "张家口",
					"SaleIncome": "613319.87",
					"SaleRough": "176075.96",
					"SalePlan": "3000000",
					"PlanFinish": "20.44",
					"TonOilincome": "87.09",
					"OilTransform": "7.97",
					"An": "2.00",
					"Mom": "-24.00"
				},
				{
					"Ranking": "9",
					"City": "中油华奥",
					"SaleIncome": "596575.25",
					"SaleRough": "387024.26",
					"SalePlan": "11000000",
					"PlanFinish": "5.42",
					"TonOilincome": "93.58",
					"OilTransform": "19.06",
					"An": "35.00",
					"Mom": "6.00"
				},
				{
					"Ranking": "10",
					"City": "承德",
					"SaleIncome": "589048.12",
					"SaleRough": "68966.73",
					"SalePlan": "2200000",
					"PlanFinish": "26.77",
					"TonOilincome": "193.24",
					"OilTransform": "11.29",
					"An": "30.00",
					"Mom": "-28.00"
				},
				{
					"Ranking": "11",
					"City": "廊坊",
					"SaleIncome": "515448.14",
					"SaleRough": "137934.72",
					"SalePlan": "3500000",
					"PlanFinish": "14.73",
					"TonOilincome": "95.47",
					"OilTransform": "8.80",
					"An": "-48.00",
					"Mom": "-3.00"
				},
				{
					"Ranking": "12",
					"City": "瑞州",
					"SaleIncome": "399875.26",
					"SaleRough": "85371.46",
					"SalePlan": "2000000",
					"PlanFinish": "19.99",
					"TonOilincome": "114.42",
					"OilTransform": "11.42",
					"An": "128.00",
					"Mom": "-30.00"
				},
				{
					"Ranking": "13",
					"City": "石家庄中油",
					"SaleIncome": "90543.62",
					"SaleRough": "20065.14",
					"SalePlan": "430000",
					"PlanFinish": "21.06",
					"TonOilincome": "213.44",
					"OilTransform": "20.45",
					"An": "-24.00",
					"Mom": "-17.00"
				},
				{
					"Ranking": "14",
					"City": "辛集中油",
					"SaleIncome": "49255.52",
					"SaleRough": "8743.12",
					"SalePlan": "250000",
					"PlanFinish": "19.70",
					"TonOilincome": "202.67",
					"OilTransform": "29.95",
					"An": "19.00",
					"Mom": "-6.00"
				},
				{
					"Ranking": "15",
					"City": "井陉中油",
					"SaleIncome": "29682.60",
					"SaleRough": "2175.66",
					"SalePlan": "140000",
					"PlanFinish": "21.20",
					"TonOilincome": "730.20",
					"OilTransform": "25.55",
					"An": "-74.00",
					"Mom": "-52.00"
				},
				{
					"Ranking": "16",
					"City": "保定中油",
					"SaleIncome": "11887.73",
					"SaleRough": "2944.97",
					"SalePlan": "100000",
					"PlanFinish": "11.89",
					"TonOilincome": "118.12",
					"OilTransform": "34.16",
					"An": "-64.00",
					"Mom": "-72.00"
				}
			]
			$.each(Items, function(i, item) {
				str = '<tr>' +
					'<td>' + item.Ranking + '</td>' +
					'<td>' + item.City + '</td>' +
					'<td>' + (+item.SaleIncome / 10000).toFixed(2) + '</td>' +
					'<td>' + (+item.An).toFixed(2) + '</td>' +
					'<td>' + (+item.Mom).toFixed(2) + '</td>' +
					'<td>' + (item.SalePlan / 10000).toFixed(2) + '</td>' +
					'<td>' + (+item.PlanFinish).toFixed(2) + '</td>' +
					'</tr>'

				$('.tbl-body tbody').append(str);
				$('.tbl-header tbody').append(str);
			});

			if(Items.length > 10) {
				$('.tbl-body tbody').html($('.tbl-body tbody').html() + $('.tbl-body tbody').html());
				$('.tbl-body').css('top', '0');
				var tblTop = 0;
				var speedhq = 50; // 数值越大越慢
				var outerHeight = $('.tbl-body tbody').find("tr").outerHeight();
				
				function Marqueehq() {
					if(tblTop <= -outerHeight * Items.length) {
						tblTop = 0;
					} else {
						tblTop -= 1;
					}
					$('.tbl-body').css('top', tblTop + 'px');
				}

				MyMarhq = setInterval(Marqueehq, speedhq);

				// 鼠标移上去取消事件
				$(".tbl-header tbody").hover(function() {
					clearInterval(MyMarhq);
				}, function() {
					clearInterval(MyMarhq);
					MyMarhq = setInterval(Marqueehq, speedhq);
				})

			}
		</script>
		
	</body>

</html>

4.html静态页面循环

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript" src="js/jquery-3.4.1.min.js" ></script>
		<style>
			table,
			tbody,
			tfoot,
			thead,
			tr,
			th,
			td {
				margin: 0;
				padding: 0;
				outline: 0;
				font-size: 100%;
				vertical-align: baseline;
				background: transparent;
				border-collapse: collapse;
				border-spacing: 0;
				border: 0px;
			}
			
			.tablebox {
				width: 300px;
				height: 400px;
				overflow: hidden;
				margin: 50px auto;
			}
			
			.tablebox table {
				width: 100%;
			}
			
			.tablebox table th,
			.tablebox table td {
				font-size: 12px;
				text-align: center;
				line-height: 36px;
			}
			
			.tablebox table th {
				color: #2584e3;
				background-color: #f6f6f6;
			}
			
			.tablebox table td img {
				display: inline-block;
				vertical-align: middle;
			}
			
			.tablebox table tbody tr:nth-child(even) {
				background-color: #f6f6f6;
			}
			
			.tablebox.table_md table td,
			.tablebox.table_md table th {
				line-height: 40px;
			}
		</style>
	</head>

	<body>
		<div class="tablebox" style="border: 1px solid #000">
			<table id="tableId" border="0" cellspacing="0" cellpadding="0">
				<thead>
					<tr>
						<th>排名</th>
						<th>地市</th>
						<th>纯枪量(吨)</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td>1</td>
						<td>大连</td>
						<td>2470.48</td>
					</tr>
					<tr>
						<td>2</td>
						<td>大连2</td>
						<td>2470.48</td>
					</tr>
					<tr>
						<td>3</td>
						<td>大连3</td>
						<td>2470.48</td>
					</tr>
					<tr>
						<td>4</td>
						<td>大连4</td>
						<td>2470.48</td>
					</tr>
					<tr>
						<td>5</td>
						<td>大连5</td>
						<td>2470.48</td>
					</tr>
					<tr>
						<td>6</td>
						<td>大连6</td>
						<td>2470.48</td>
					</tr>
					<tr>
						<td>7</td>
						<td>大连7</td>
						<td>2470.48</td>
					</tr>
					<tr>
						<td>8</td>
						<td>大连8</td>
						<td>2470.48</td>
					</tr>
					<tr>
						<td>9</td>
						<td>大连9</td>
						<td>2470.48</td>
					</tr>
					<tr>
						<td>10</td>
						<td>大连10</td>
						<td>2470.48</td>
					</tr>
					<tr>
						<td>11</td>
						<td>大连11</td>
						<td>2470.48</td>
					</tr>
					<tr>
						<td>12</td>
						<td>大连12</td>
						<td>2470.48</td>
					</tr>
					<tr>
						<td>13</td>
						<td>大连13</td>
						<td>2470.48</td>
					</tr>
					<tr>
						<td>14</td>
						<td>大连14</td>
						<td>2470.48</td>
					</tr>
					<tr>
						<td>15</td>
						<td>大连15</td>
						<td>2470.48</td>
					</tr>
				</tbody>
			</table>
		</div>
	</body>
	<script>
		// 参数1 tableID,参数2 div高度,参数3 速度,参数4 tbody中tr几条以上滚动
		tableScroll('tableId', 400, 30, 10)
		var MyMarhq;

		function tableScroll(tableid, hei, speed, len) {
			clearTimeout(MyMarhq);
			$('#' + tableid).parent().find('.tableid_').remove()
			$('#' + tableid).parent().prepend(
				'<table class="tableid_"><thead>' + $('#' + tableid + ' thead').html() + '</thead></table>'
			).css({
				'position': 'relative',
				'overflow': 'hidden',
				'height': hei + 'px'
			})
			$(".tableid_").find('th').each(function(i) {
				$(this).css('width', $('#' + tableid).find('th:eq(' + i + ')').width());
			});
			$(".tableid_").css({
				'position': 'absolute',
				'top': 0,
				'left': 0,
				'z-index': 9
			})
			$('#' + tableid).css({
				'position': 'absolute',
				'top': 0,
				'left': 0,
				'z-index': 1
			})

			if($('#' + tableid).find('tbody tr').length > len) {
				$('#' + tableid).find('tbody').html($('#' + tableid).find('tbody').html() + $('#' + tableid).find('tbody').html());
				$(".tableid_").css('top', 0);
				$('#' + tableid).css('top', 0);
				var tblTop = 0;
				var outerHeight = $('#' + tableid).find('tbody').find("tr").outerHeight();

				function Marqueehq() {
					if(tblTop <= -outerHeight * $('#' + tableid).find('tbody').find("tr").length) {
						tblTop = 0;
					} else {
						tblTop -= 1;
					}
					$('#' + tableid).css('margin-top', tblTop + 'px');
					clearTimeout(MyMarhq);
					MyMarhq = setTimeout(function() {
						Marqueehq()
					}, speed);
				}

				MyMarhq = setTimeout(Marqueehq, speed);
				$('#' + tableid).find('tbody').hover(function() {
					clearTimeout(MyMarhq);
				}, function() {
					clearTimeout(MyMarhq);
					if($('#' + tableid).find('tbody tr').length > len) {
						MyMarhq = setTimeout(Marqueehq, speed);
					}
				})
			}

		}
	</script>

</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值