如何使用 JavaScript 在点击按钮时发送行数据?
表格包含多行,每行包含多列。此外,每列包含多个 HTML 元素或文本。
在这里,我们将在每个表格行中添加提交按钮,并根据按钮点击来访问行的数 据。我们将使用 JavaScript 和 jQuery 来访问行数据,之后,用户可以使用 API 等将数据发送到任何他们想要的地方。
使用 JavaScript 访问行数据
在这种方法中,我们将访问第一个被点击的元素。我们将根据被点击的元素找到其父元素,从而得到特定列。之后,我们可以找到该列的父元素,从而得到一行。接下来,我们可以访问该行的所有列及其数据。
语法
用户可以按照以下语法使用 JavaScript 访问行数据。
var clickedRow = clickedElement.parentNode.parentNode.id; var rowData = document.getElementById(clickedRow).querySelectorAll('.column-data'); let text = rowData[0].innerHTML;
在上面的语法中,clickedRow 包含点击按钮的行 ID。rowData 包含特定行的所有列。之后,我们可以从数组中访问每一列,并可以使用 innerHTML 属性访问列的 HTML。
示例
在下面的示例中,我们创建了表格并将学生信息添加到表格中。我们还在表格中添加了提交列;每一行都包含提交按钮。
在 JavaScript 中,我们在每个按钮上添加了点击事件监听器,当用户点击上述按钮时,它会访问被点击元素的行。之后,它会访问该行的所有列。
在输出中,用户可以看到被点击行的数 据。
<html>
<body>
<h2>Accessing the <i> row data of table </i> using JavaScript</h2>
<table class = "table">
<tbody>
<tr>
<th> Sr. NO </th>
<th> Student_name </th>
<th> Course </th>
<th> Graduation Year </th>
<th> Submit Data </th>
</tr>
<tr id = "row1">
<th> 1 </th>
<td class = "column-data"> Shubham </td>
<td class = "column-data"> CSE </td>
<td class = "column-data"> 2023 </td>
<td> <input type = "button" value = "Submit Data" class = "inp"/></td>
</tr>
<tr id = "row2">
<th> 2 </th>
<td class = "column-data"> Alice </td>
<td class = "column-data"> CSE </td>
<td class = "column-data"> 2022 </td>
<td> <input type = "button" value = "Submit Data" class = "inp"/> </td>
</tr>
<tr id = "row3">
<th> 3 </th>
<td class = "column-data"> Bob </td>
<td class = "column-data"> B.SC. Maths </td>
<td class = "column-data"> 2021 </td>
<td> <input type = "button" value = "Submit Data" class = "inp"/></td>
</tr>
<tr id = "row4">
<th> 4 </th>
<td class = "column-data"> Jems </td>
<td class = "column-data"> EC </td>
<td class = "column-data"> 2025 </td>
<td> <input type = "button" value = "Submit Data" class = "inp"/></td>
</tr>
</tbody>
</table>
<div id = "output"> </div>
<script>
let allButtons = document.getElementsByClassName('inp');
for (let button of allButtons) {
button.addEventListener('click', () => {
var clickedElement = event.target
var clickedRow = clickedElement.parentNode.parentNode.id;
var rowData = document.getElementById(clickedRow).querySelectorAll('.columndata');
let Student_name = rowData[0].innerHTML;
let course = rowData[1].innerHTML;
let year = rowData[2].innerHTML;
let output = document.getElementById('output');
output.innerHTML = "The submited row data are : <br>";
output.innerHTML += `name - ${Student_name}, course - ${course}, Graduation year - ${year}`;
});
}
</script>
</body>
</html>
使用 JQuery 访问行数据
在 JQuery 中,我们可以检测输入上的点击事件,并使用 closest() 方法找到最接近被点击输入的行。之后,我们可以使用 JQuery 访问该行的每一列。
语法
用户可以按照以下语法使用 JQuery 访问被点击行的数 据。
$(".inp").click(function () { var $row = $(this).closest("tr"); var $text = $row.find(".class").text(); });
在上面的语法中,我们通过传递 'tr' 作为参数使用 closest() 方法来查找最近的表格行。之后,我们使用 find() 和 text() 方法获取特定列的文本。
示例
在下面的示例中,我们创建了一个包含各种房屋信息的表格。当用户点击任何行的“提交数据”按钮输入时,它会访问行数据并在屏幕上显示它。
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.3/jquery.min.js" crossorigin="anonymous" referrerpolicy="noreferrer"></script>
</head>
<body>
<h2>Accessing the <i> row data of table </i> using JQuery.</h2>
<table class = "table">
<tbody>
<tr>
<th> House No. </th>
<th> Area </th>
<th> Color </th>
<th> Rooms </th>
<th> Submit </th>
</tr>
<tr id = "rowA">
<th> A </th>
<td class="column-data1"> 3600 Sq. feet </td>
<td class="column-data2"> Aqua </td>
<td class="column-data3"> 4 </td>
<td> <input type="button" value="Submit Data" class="inp" /></td>
</tr>
<tr id = "rowB">
<th> B </th>
<td class="column-data1"> 2500 Sq. feet </td>
<td class="column-data2"> Pink </td>
<td class="column-data3"> 3 </td>
<td> <input type="button" value="Submit Data" class="inp" /></td>
</tr>
<tr id = "rowC">
<th> C </th>
<td class="column-data1"> 1500 Sq. feet </td>
<td class="column-data2"> Blue </td>
<td class="column-data3"> 2 </td>
<td> <input type="button" value="Submit Data" class="inp" /></td>
</tr>
<tr id = "rowD">
<th> D </th>
<td class="column-data1"> 500 Sq. feet </td>
<td class="column-data2"> grey </td>
<td class="column-data3"> 5 </td>
<td> <input type="button" value="Submit Data" class="inp" /></td>
</tr>
</tbody>
</table>
<div id = "output"> </div>
<script>
$(".inp").click(function () {
var $row = $(this).closest("tr");
var $Area = $row.find(".column-data1").text();
var $color = $row.find(".column-data2").text();
var $room = $row.find(".column-data3").text();
$('#output').html(`The values submited are : <br> Area - ${$Area}, color - ${$color}, Total Rooms - ${$room}`);
});
</script>
</body>
</html>
我们已经看到了两种访问被点击表格行数据的 方法。用户可以操作数据以发送到应用程序的后端或请求其他资源的数据。
在第一种方法中,我们将该行的所有列以数组的形式获取。在第二种方法中,我们需要使用类名或其他标识符分别访问每一列。此外,用户还可以使用各种 JavaScript 方法进一步操作这两种方法。
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP