Как передать элемент onclick?

#javascript #jquery #html

#javascript #jquery #HTML

Вопрос:

На самом деле я пытаюсь передать элемент td, с которым я должен выполнить некоторые операции при td click или, лучше, у меня есть функция, в которой я использую следующий код

  var tr = document.getElementById($('#tavolo').val());
  $(`td:eq(${inizio})`, tr).css('background-color', 'red') .attr("onclick","Elimina('"   tr   "');");
  

когда пользователь нажмет на td, он откроет модал, а затем в этом модале есть кнопка, которая вызывает другую функцию, которая удалит некоторые элементы из этого td.

Проблема в том, что «[object HTMLTableRowElement]» передается как элемент tr, поэтому я не могу выполнить с ним какую-либо операцию.

Если это полезно, вот функция Elimina

 function Elimina(tr) {
    $('#del').attr("onclick", "eliminaPrenotazione('"   tr   "');");
}
  

Пока здесь есть функция eliminaPrenotazione

 function eliminaPrenotazione(tr) {
var start = 1;

        for (i = 0; i <= 8; i  ) {
            $(`td:eq(${start})`, tr).css('background-color', 'white').removeAttr("class").find('span').remove();
        }
    }
  

Вот html-код того, как выглядит td (я не могу опубликовать весь html, поскольку в нем 96 похожих td)

 <td style="padding: 0px; position: relative; background-color: red;" class="48:15" data-inizio="12:00" data-fine="16:00" onclick="Elimina('48:15','Ihor','12:00','16:00','[object HTMLTableRowElement]');"><span class="tag" style="width: 160px; overflow: hidden;" onmouseover="highlight(this);" onmouseout="unhighlight(this)">Ihor</span></td>
  

Комментарии:

1. пожалуйста, поделитесь html

2. Почему вы смешиваете DOM и jquery. Выберите один. Почему вы добавляете обработчик событий с помощью attr? Вы должны использовать on или click/ .

3. @epascarello на самом деле я не мог использовать click, поскольку это динамически создаваемая таблица, и только определенный td в ней будет иметь onclick, это плохая практика смешивать DOM и jquery?

4. @brk добавил код того, как выглядит td

5. если это динамически сгенерированная таблица, добавьте прослушиватель событий щелчка к ее родительскому элементу, поскольку javascript является большим поклонником обработки событий, вы поймаете событие щелчка там.

Ответ №1:

Я просто собираюсь дать вам указание, чтобы попытаться направить вас на правильный путь.

Вы можете сделать что-то похожее на это :

 $("#yourBtnID").click(function(elem){
   $("#yourDivID").append("<td>"   elem   "</td>");
});
  

это добавит строку td к каждому щелчку в основном

Теперь вы можете попробовать изменить свой собственный код и вернуться, если у вас не получится

Удачи 😉

Комментарии:

1. На самом деле я все еще использую кнопку click on the form, но это временная шкала, на которой интерактивный td будет создаваться динамически или загружаться с сервера

2. да, я видел, я имел в виду, что вы должны использовать функцию append, например, потому что она добавляет в DOM при каждом нажатии