如何使用按钮添加和删除行?

时间:2019-01-03 10:02:53

标签: javascript html-table

我迫切需要帮助,我有一个要添加和删除带有按钮的行的表。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title> Assessment</title>
    <link rel="stylesheet" href="css/normalise.css">
    <link rel="stylesheet" href="css/Main.css">
</head>

<body id="Mybody">     
    <form id="RiskManagement">    
    <fieldset>
        <table id="myTable"> 
            <tr>
                <th>#</th>
                <th>Activity conducted</th>
                <th>Hazard associated with the activity</th>
                <th>Risk associated with the hazard</th>
                <th>Liklihood of risk manifesting</th>
                <th>Consequence for when risk manifest</th>
                <th>Risk rating</th>
                <th>Risk severity level</th>
                <th>Controls to implement</th>
           </tr>
           <tr class="MyRow" id="rs">
               <td><input type="number" id="riskNumber" readonly></td>
                <td><textarea type="text"></textarea></td> <!--activity input-->
                <td><textarea type="text"></textarea></td> <!--Hazard input-->
                <td><textarea type="text"></textarea></td> <!--risk input-->
                <td ><input id="Liklihood" type="number" name="risk_liklihood" min="0" max="3"></td> <!--liklihood input-->
                <td ><input id="Consequence" type="number" name="risk_consequence" min="0" max="3" ></td> <!--consequence input-->
                <td id="myRisk"><input  id="Risk_rating" name="Risk_rating" readonly></td> <!--risk rating input-->
                <td id="mySeverity"><input id="Severity_level" type="text" readonly></td> <!--severity level to auto display input-->
                <td><textarea type="text"></textarea></td>
                <td><button class="remove" id="removeRows">-</button></td> <!--Remove button-->
        </tr>
        </table>   
    </fieldset>
    <button id="addRow">+ Add</button>
    </form>
    <script src="js/app.js"></script>
</body>
</html>

请为我提供指导,甚至帮助我编写Java脚本中的一段代码,我可以使用它们使用按钮来添加和删除行。

我们将不胜感激。

3 个答案:

答案 0 :(得分:2)

您的方法几乎是正确的,只需查看下面的代码并实施这些更改

function removeCurrentRow(indexOfRow) {
  $('.MyRow').eq(indexOfRow).remove();
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="myTable"> 
    <tr>
        <th>#</th>
        <th>Activity conducted</th>
        <th>Hazard associated with the activity</th>
        <th>Risk associated with the hazard</th>
        <th>Liklihood of risk manifesting</th>
        <th>Consequence for when risk manifest</th>
        <th>Risk rating</th>
        <th>Risk severity level</th>
        <th>Controls to implement</th>
   </tr>
     <tr class="MyRow" id="rs">
         <td><input type="number" id="riskNumber" readonly></td>
          <td><textarea type="text"></textarea></td> <!--activity input-->
          <td><textarea type="text"></textarea></td> <!--Hazard input-->
          <td><textarea type="text"></textarea></td> <!--risk input-->
          <td ><input id="Liklihood" type="number" name="risk_liklihood" min="0" max="3"></td> <!--liklihood input-->
          <td ><input id="Consequence" type="number" name="risk_consequence" min="0" max="3" ></td> <!--consequence input-->
          <td id="myRisk"><input  id="Risk_rating" name="Risk_rating" readonly></td> <!--risk rating input-->
          <td id="mySeverity"><input id="Severity_level" type="text" readonly></td> <!--severity level to auto display input-->
          <td><textarea type="text"></textarea></td>
          <td>
            <button class="remove" onclick="removeCurrentRow(0)">-</button>
          </td> <!--Remove button-->
  </tr>
</table>

答案 1 :(得分:1)

$(document).ready(function(e) {
        $('#addRow').on('click', function(){
			var cln=$("#rs").clone()
			$('#myTable').append(cln)
			})
		$('body').on('click','.remove',function(){
			$(this).closest('tr').remove();
			})
    });
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title> Assessment</title>
    <link rel="stylesheet" href="css/normalise.css">
    <link rel="stylesheet" href="css/Main.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>

<body id="Mybody">     
    <form id="RiskManagement">    
    <fieldset>
        <table id="myTable"> 
            <tr>
                <th>#</th>
                <th>Activity conducted</th>
                <th>Hazard associated with the activity</th>
                <th>Risk associated with the hazard</th>
                <th>Liklihood of risk manifesting</th>
                <th>Consequence for when risk manifest</th>
                <th>Risk rating</th>
                <th>Risk severity level</th>
                <th>Controls to implement</th>
           </tr>
           <tr class="MyRow" id="rs">
               <td><input type="number" id="riskNumber" readonly></td>
                <td><textarea type="text"></textarea></td> <!--activity input-->
                <td><textarea type="text"></textarea></td> <!--Hazard input-->
                <td><textarea type="text"></textarea></td> <!--risk input-->
                <td ><input id="Liklihood" type="number" name="risk_liklihood" min="0" max="3"></td> <!--liklihood input-->
                <td ><input id="Consequence" type="number" name="risk_consequence" min="0" max="3" ></td> <!--consequence input-->
                <td id="myRisk"><input  id="Risk_rating" name="Risk_rating" readonly></td> <!--risk rating input-->
                <td id="mySeverity"><input id="Severity_level" type="text" readonly></td> <!--severity level to auto display input-->
                <td><textarea type="text"></textarea></td>
                <td><button class="remove" id="removeRows" type="button">-</button></td> <!--Remove button-->
        </tr>
        </table>   
    </fieldset>
    <button id="addRow" type="button">+ Add</button>
    </form>
  
</body>
</html>

答案 2 :(得分:0)

我认为removeRows的ID是错误的,因为您可能有多行,所以有多个按钮将删除该项目。我已经从桌子上拿走了那个ID。

//add click listener on table (you can now add and remove rows without it breaking)
document.querySelector('#myTable').addEventListener(
  'click',
  e=>{
    //if the thing clicked has a class of remove        
    if(e.target.className==='remove'){
      //remove parent of parent of the button (is the row)
      e.target.parentElement.parentElement.remove();
    }
  }
);

document.querySelector('#addRow').addEventListener(
  'click',
  e=>{
    //create a row and set innerhtml (removed all id's since they won't be unique)
    const row = document.createElement('tr');
    row.innerHTML = `
          <td><input type="number" readonly></td>
        <td><textarea type="text"></textarea></td> <!--activity input-->
        <td><textarea type="text"></textarea></td> <!--Hazard input-->
        <td><textarea type="text"></textarea></td> <!--risk input-->
        <td ><input type="number" name="risk_liklihood" min="0" max="3"></td> <!--liklihood input-->
        <td ><input type="number" name="risk_consequence" min="0" max="3" ></td> <!--consequence input-->
        <td ><input  id="Risk_rating" name="Risk_rating" readonly></td> <!--risk rating input-->
        <td ><input type="text" readonly></td> <!--severity level to auto display input-->
        <td><textarea type="text"></textarea></td>
        <td><button class="remove">-</button></td> <!--Remove button-->
    `;
    //add the row to the table
    document.querySelector('#myTable').appendChild(row);
  }
)
<table id="myTable"> 
  <tr>
      <th>#</th>
      <th>Activity conducted</th>
      <th>Hazard associated with the activity</th>
      <th>Risk associated with the hazard</th>
      <th>Liklihood of risk manifesting</th>
      <th>Consequence for when risk manifest</th>
      <th>Risk rating</th>
      <th>Risk severity level</th>
      <th>Controls to implement</th>
  </tr>
  <tr class="MyRow" id="rs">
      <td><input type="number" id="riskNumber" readonly></td>
        <td><textarea type="text"></textarea></td> <!--activity input-->
        <td><textarea type="text"></textarea></td> <!--Hazard input-->
        <td><textarea type="text"></textarea></td> <!--risk input-->
        <td ><input id="Liklihood" type="number" name="risk_liklihood" min="0" max="3"></td> <!--liklihood input-->
        <td ><input id="Consequence" type="number" name="risk_consequence" min="0" max="3" ></td> <!--consequence input-->
        <td id="myRisk"><input  id="Risk_rating" name="Risk_rating" readonly></td> <!--risk rating input-->
        <td id="mySeverity"><input id="Severity_level" type="text" readonly></td> <!--severity level to auto display input-->
        <td><textarea type="text"></textarea></td>
        <td><button class="remove">-</button></td> <!--Remove button-->
  </tr>
</table>

<button id="addRow">+ Add</button>