Действие по нажатию (проверка появляется) выполняется, второе нажатие (проверка исчезает) выполняется снова. Нужно, второй клик, чтобы удалить первое действие - PullRequest
1 голос
/ 21 марта 2020
<body>
    <h1 align="center">Safety Summary Generator</h1>
    <table style="width:">
        <tr>
            <th height="200" width="150">
                <div id="CEC">
                    <img src="../CHEMICAL EXPOSURE - CORROSIVE.png" alt="CHEMICAL EXPOSURE - 
                CORROSIVE" width="100" height="100">
                        <p>CHEMICAL EXPOSURE - CORROSIVE</p>
                    </div>

Пользователь выбирает переключатель, и действие выполняется, и появляется проверка. В настоящее время, когда радио выбрано во второй раз, оно снова выполняет действие, но проверка снята. Мне нужно второй клик, чтобы удалить первое действие.

<input type="checkbox" value="Load" onClick="addRow('CEC', 1)">
</th>undefined</tr>undefined</table>undefined<h3 align="center">(Safety summary print sheet below)</h3>undefined<div>undefined<h1>
<hr color="#00cc00" width="100%">
</h1>
<div id="printDiv">
    <table id="2table" border="1">
        <h2>Chemical Hazards</h2>
        <thead id="2table-head"></thead>
        <tbody id="2table-body"></tbody>
    </table>
</div>
<h1>
    <hr color="#00cc00" width="100%">
    </h1>
    <div align="center">
        <input type="button" onclick="PSSSReset()" value="PSSS/HWDI Delete">
        </div>
        <br>
            <h3 align="center" style="color: red">Caution: Be sure to review the print sheet (between the 
            green lines) before pressing the Print Safety Summary button. You can only print once before 
            refreshing the browser.</h3>
            <div align="center">
                <button id="doPrint">Print Saftey Summary</button>
            </div>
        </div>
    </body>
//Table row and column

Требуется прослушиватель событий, чтобы определить первый щелчок и выполнить приведенную ниже функцию. Требуется прослушиватель событий, чтобы определить второй щелчок, удалить функцию первого нажатия и выполнить сброс.

 "use strict";
var t_names = ["1table-body", "2table-body", "3table-body", "4table-body"];
var counter = [0, 0, 0, 0];

function addRow(v_id, t_id) {
    var t_string = t_names[t_id];
    console.log(t_string)
    var tableBody = document.getElementById(t_string);
    //find last row
    var row = tableBody.rows[tableBody.rows.length - 1];
    //if the row has six cells or there are no rows create a new one
    if (row === null || row === undefined || row.cells.length >= 6) {
        row = document.createElement("tr");
        tableBody.appendChild(row);
    }
    //create new cell
    var th = document.createElement("th");
    //add data to cell
    th.innerHTML = document.getElementById(v_id).innerHTML;
    //add cell to row
    row.appendChild(th);
}

1 Ответ

0 голосов
/ 21 марта 2020

Я исправил ваш код, вот UPDATED_FIDDLE

HTML

Я изменил вход элемент для вызова updateTable () и передачи дополнительного аргумента this.

image

JS

Я создал новый функция с именем updateTable () принимает те же два параметра, что и addTable (), плюс получает элемент this и сохраняет его как thisCheckbox.

updateTable () проверяет, является ли таблица пустой. Если это так, он вызывает addRow () и передает параметры vid и tid.

Также, чтобы быть в безопасности, устанавливает для «флажка» состояние флажка в значение true (поэтому флажок будет установлен в пользовательском интерфейсе).

Если таблица не пуста, updateTable ( ) вызывает delRow () и передает ему элемент таблицы. Это также гарантирует, что флажок снят.

Функция addRow (), я не изменил.

Функция delRow () - это просто while l oop, которая удаляет все строка таблицы, пока она не станет пустой.

Надеюсь, это поможет! Дайте знать, если у вас появятся вопросы. :)

var t_names = ["1table-body", "2table-body", "3table-body", "4table-body"];
var counter = [0, 0, 0, 0];


function updateTable(vid, tid, thisCheckbox) {
   var t_string = t_names[tid];
   var tableBody = document.getElementById(t_string);
    //check if table is empty
   if (tableBody.rows.length === 0) {
        //table is empty so regardless of checkbox state
        //checkbox needs to be checked now as we are going
        //to add the row
        thisCheckbox.checked = true;
        addRow(vid, tid);
    } else {
        //table is not empty so make sure checkbox is unchecked
        //then remove the row
        thisCheckbox.checked = false;
        delRow(tableBody);
    }
}
function delRow(tableBody) {
    while (tableBody.rows.length > 0) {
        tableBody.deleteRow(0);
    }
}

function addRow(v_id, t_id) {
    var t_string = t_names[t_id];
    console.log(t_string)
    var tableBody = document.getElementById(t_string);
    //find last row
    var row = tableBody.rows[tableBody.rows.length - 1];
    //if the row has six cells or there are no rows create a new one
    if (row === null || row === undefined || row.cells.length >= 6) {
        row = document.createElement("tr");
        tableBody.appendChild(row);
    }
    //create new cell
    var th = document.createElement("th");
    //add data to cell
    th.innerHTML = document.getElementById(v_id).innerHTML;
    //add cell to row
    row.appendChild(th);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...