Удаление td с помощью JavaScript

Есть ли способ удалить td (см. Прокомментированный td «подлежит удалению») из этой таблицы без редактирования HTML. Кроме того, я не использую только классы, поскольку у меня есть те же классы в других таблицах, которые мне не нужно удалять, поэтому также ориентируюсь на идентификатор диапазона. Заранее спасибо!

       <div id = "pnlPersonalDetails2">

                  </div><table cellpadding = "0" cellspacing = "0" border = "0" class = "surveyquestions">
              <tbody><tr>

                <td colspan = "2" class = "pd_question">
                    <span id = "lbl2"></span>
                  </td>
                  </tr><tr>
                    <td class = "pd_label">FIRST NAME<span class = "red"> *</span></td>
                    <td>
                      <input name = "Name微statictext_2" type = "text" id = "Name微statictext_2" class = "pd_textbox">
                    </td>
                    <!-- To be removed
                    <td class = "error_label">
                      <span id = "ctl03" style = "visibility:hidden;">Required Field</span>
                    </td>-->
                  </tr>

            </tbody></table>
    <div id = "pnlPersonalDetails3">

          </div><table cellpadding = "0" cellspacing = "0" border = "0" class = "surveyquestions">
      <tbody><tr>
 <!-- To be removed      
  <td colspan = "2" class = "pd_question">
            <span id = "lbl3"></span>
          </td>-->
      </tr><tr>
        <td class = "pd_label">LAST NAME<span class = "red"> *</span></td>
        <td>
          <input name = "Name微statictext_3" type = "text" id = "Name微statictext_3" class = "pd_textbox">
        </td>
        <td class = "error_label">
          <span id = "ctl04" style = "visibility:hidden;">Required Field</span>
        </td>
      </tr>

Вот как это выглядит сейчас

введите описание изображения здесь

Вот как я хочу выглядеть после удаления прокомментированных td

введите описание изображения здесь

Я прикрепил сюда весь код https://codepen.io/duicug/pen/VGreQZ

С jQuery: $("#ctl03").parent().hide() или $("#ctl03").closest('td').hide()

Chris G 07.09.2018 11:22

Я предполагаю, что он хочет скрыть ЛЮБОЙ td, перед которым стоит комментарий "To be hidden"

mplungjan 07.09.2018 11:22

@vsync где Крис трогает HTML? `

mplungjan 07.09.2018 11:24

@vsync "удаление td" и "без касания HTML" уже противоречиво, поэтому я предполагаю, что то, что я предложил, пока подходит ("прикосновение к HTML", вероятно, означает "изменение на стороне сервера")

Chris G 07.09.2018 11:24

OP: определить «удаление»

vsync 07.09.2018 11:24
"не касаясь HTML" - Хм, контент, который нужно скрыть, закомментирован в HTML, который вы показали, так что ... нет необходимости удалять эти элементы, их там нет. Совершенно непонятно, о чем вы здесь спрашиваете или какую попытку вы предприняли для решения проблемы. Выбор элементов по идентификатору хорошо документирован, как и поиск родителя элемента, так что ...
T.J. Crowder 07.09.2018 11:25

как насчет row.find('td:nth-of-type(<the index of the td to be hidden>)').hide();

vikscool 07.09.2018 11:26

прокомментированные td создают пространство, которое я хочу удалить

Duicug 07.09.2018 11:27

@Duicug - Нет, закомментированные теги td в tr не «создают пространство». Пожалуйста, обновите свой вопрос, добавив минимальный воспроизводимый пример, демонстрирующий проблему, и четкое ее описание (вы сказали противоречивые вещи, что вы хотите удалить td и что вы хотите удалить «пробел»). В идеале сделать MCVE работоспособный с помощью Stack Snippets (кнопка панели инструментов [<>]; вот как это сделать).

T.J. Crowder 07.09.2018 11:36

@Chris G, не касаясь HTML, который я имел в виду, например, без добавления идентификатора в td

Duicug 07.09.2018 11:45

@Duicug Здесь мы говорим о закомментированном <td>, так что даже если бы он создавал пространство (а это не так), оно было бы горизонтальным.

Chris G 07.09.2018 11:48

@Chris G Причина, по которой я поместил td, который я хочу удалить, в комментариях, заключалась в том, чтобы попытаться быть конкретным, но похоже, что это была не очень хорошая идея. В моем коде нет комментариев в HTML, и у меня вообще нет доступа для редактирования HTML напрямую.

Duicug 07.09.2018 11:56

@Duicug Это то, что я предполагал, см. Решение, которое я опубликовал в моем первом комментарии. Я вижу, что ваши <td> - это блоки, поэтому я поправляюсь; они действительно создают вертикальное пространство.

Chris G 07.09.2018 13:27
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
13
1 894
4

Ответы 4

<td id = "hideTD" class = "error_label" style = "visibility: hidden;">
    <span id = "ctl03" style = "visibility:hidden;">Required Field</span>
</td>

<script>
  document.getElementById("hideTD").style.visibility = "hidden";
</script>

Вы можете сослаться на этот сайт, хороший образец https://www.w3schools.com/jsref/prop_style_display.asp

Надеюсь, это поможет вам.

Спасибо за ответ. К сожалению, это не помогает, поскольку вы добавили идентификатор в td, который, как я уже упоминал, мне не разрешено редактировать HTML.

Duicug 07.09.2018 11:32

Вы можете использовать querySelector, чтобы найти такой класс:

var target = document.querySelector("#pnlPersonalDetails2 .error_label");

Затем есть несколько способов удалить его из DOM.

Вы можете оставить его в памяти, чтобы потом легко показать его снова:

target.style.display = "none";  //Undo by setting to "" or to previous value

Или вы можете сделать его невидимым, чтобы оставить его в памяти и изменить расположение окружающего содержимого:

target.style.visibility = "hidden";  //Undo by setting to "" or to previous value

Или вы можете полностью удалить его из DOM:

target.parent.removeChild(target);

попробуйте с помощью jquery:

$("#lbl2").toggle();

может это тебе поможет? var el = document.getElementById ('lbl2'); el.parentElement.hidden = true; или удалить td var el = document.getElementById ('ctl03'); el.parentElement.remove ();

<td class = "error_label">
  <span id = "ctl03" style = "visibility:hidden;">Required Field</span>
</td>

<td colspan = "2" class = "pd_question">
  <span id = "lbl3"></span>
</td>

<script>
  document.getElementById("ctl03").parentElement.remove();
  document.getElementById("lbl3").parentElement.remove();
</script>

Я только что обновил свой вопрос кодом. Вы можете найти это здесь codepen.io/duicug/pen/VGreQZ Все еще ищите решение

Duicug 07.09.2018 13:07

Это решение вашего вопроса «как удалить некоторые TD. Для достижения результата, который показан на картинке, вам необходимо изменить правила макета или стиля. Разрыв между текстовым полем имени и ячейкой фамилии составляет (после удаления нужной ячейки ) a <TD id = error_label>. Вы можете удалить и его, или поиграться с правилами CSS и т. д. Или задать новый вопрос.

Sven Liivak 07.09.2018 17:04

Другие вопросы по теме