使用jQuery将2D数组值分配给HTML表

时间:2016-09-20 13:17:56

标签: javascript jquery html arrays

我有一个表,我从中获取值并将其存储在2D数组中,然后我将这个2D数组转置并存储另一个名为输出数组的数组,现在我必须在以前使用的表的 td 中分配这些值。 以下是代码:



$(document).ready(function(){
	var rows = [];
	var output = [];
	$("#btnTranspose").on("click",function(){
		$("tr").each(function(){
			var columns = [];
			$(this).find("td").each(function(){
				columns.push($(this).text());
			});
			rows.push(columns);
		});
		for(var i = 0; i < rows.length; i++){
			output[i] = [];
			for(var j = 0; j < rows[i].length; j++){
				output[i][j] = rows[j][i];
			}
		}

		$("tr").each(function(){
			$(this).find("td").each(function(){
				for(var k = 0; k < output.length; k++){
                  for(var l = 0; l < output[k].length; l++){
                    $(this).text(output[k][l]);
                  }                 
                }
			});
		});
	});
});
&#13;
body{

}
table{
	border: 1px solid black;
}
td{
	border: 1px solid black;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Transpose Using jQuery</title>
	<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
	<table id="matrix">
		<tbody>
			<tr>
				<td>1</td>
				<td>2</td>
				<td>3</td>
				<td>4</td>
				<td>5</td>
			</tr>
			<tr>
				<td>6</td>
				<td>7</td>
				<td>8</td>
				<td>9</td>
				<td>10</td>
			</tr>
			<tr>
				<td>11</td>
				<td>12</td>
				<td>13</td>
				<td>14</td>
				<td>15</td>
			</tr>
			<tr>
				<td>16</td>
				<td>17</td>
				<td>18</td>
				<td>19</td>
				<td>20</td>
			</tr>
			<tr>
				<td>21</td>
				<td>22</td>
				<td>23</td>
				<td>24</td>
				<td>25</td>
			</tr>
		</tbody>
	</table>
	<input type="button" value="Transpose!" id="btnTranspose">
	<table id="outputTable">
		
	</table>
	
	<script type="text/javascript" src="jquery.min.js"></script>
	<script type="text/javascript" src="script.js"></script>
</body>
</html>
&#13;
&#13;
&#13;

问题是:代码运行每个td,输出数组的元素分配给每个 td ,但我想分配一个输出元素一次将数组添加到一个 td 。我怎么做?

1 个答案:

答案 0 :(得分:0)

each()回调为您提供该实例的索引。因此,当您迭代行时,您已经知道外部数组索引。然后,当你迭代单元格时,你有单元格索引

$("tr").each(function(rowIndex) {
  var rowData = output[rowIndex];
  $(this).find("td").each(function(cellIndex) {
    $(this).text(rowData[cellIndex]);
  });
});