<tbody> не скрывается при изменении значения раскрывающегося списка

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

$(function() {
  $("#ddlIncomeAssement").change(function() {
    var status = this.value;

    if (status == "FULLDOCPAYG") {
      $('#FullDocPayg').show();
      $('#FullDocSelf').hide();
      $('#LiteDoc').hide();
      $('#RentalIncome').hide();
    } else if (status == "FULLDOCSELF") {
      $('#FullDocPayg').hide();
      $('#FullDocSelf').show();
      $('#LiteDoc').hide();
      $('#RentalIncome').hide();
    } else if (status == "LITEDOC") {
      $('#FullDocPayg').hide();
      $('#FullDocSelf').show();
      $('#LiteDoc').show();
      $('#RentalIncome').hide();

    } else if (status == "RENTALINCOME") {
      $('#RentalIncome').show();
      $('#FullDocPayg').hide();
      $('#FullDocSelf').show();
      $('#LiteDoc').show();
    }
    // alert(status);
  });
});
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id = "ddlIncomeAssement">
  <option value = "FULLDOCPAYG">FULL DOC-PAYG</option>
  <option value = "FULLDOCSELF">FULL DOC- SELF EMPLOYED</option>
  <option value = "LITEDOC">LITE DOC</option>
  <option value = "RENTALINCOME">RENTAL INCOME VERIFICATION AND ASSEMENT</option>
</select>

<table>
  <tbody id = "FullDocPayg">
    <tr>
      <td>FullDocPayg</td>
    </tr>
  </tbody>
  <tbody id = "FullDocSelf">
    <tr>
      <td>FullDocSelf</td>
    </tr>
  </tbody>
  <tbody id = "LiteDoc">
    <tr>
      <td>LiteDoc</td>
    </tr>
  </tbody>
  <tbody id = "RentalIncome">
    <tr>
      <td class = "light-blue-background text-center" colspan = "4">RENTAL INCOME VERIFICATION AND ASSESSMENT</td>
    </tr>
    <tr class = "text-left">
      <td class = "text-center">6.1</td>
      <td>Confirmation of rental income held using<br /> - Rental statements;<br /> - Lease Agreement;<br /> - 2 x rental estimates (if not currently rented); or<br /> - Valuation Report (if not currently rented)
        <br /> If multiple properties use Rental Calculator and ensure correct allocation to ownership
      </td>

    </tr>
  </tbody>
</table>

Не уверен, почему тело не прячется Он работает в сниппете, но не в реальном. есть мастер-страница. Может ли это вызвать проблемы с запуском скрипта. Проверяя источник просмотра, я не могу найти элемент

тоже пытаюсь Этот способ

Можете ли вы сделать пример фрагмента с отображением проблемы?

Shidersz 06.11.2018 04:40

Он работает отлично - в чем проблема?

Jack Bashford 06.11.2018 04:41

Я отредактировал ваш вопрос, чтобы превратить ваш код в фрагмент. Я оставил исходный код нетронутым, однако я делал добавляю образцы строк к вашим элементам <tbody>. Тем не менее, ваш код работает нормально. Вам нужно будет отредактировать свой вопрос, чтобы привести пример того, что проблема воспроизводит, иначе это все равно, что пытаться попросить механика починить машину, и все в порядке.

Tyler Roper 06.11.2018 04:42

Я не уверен, что мне не хватает. он не работает на странице. Может ли результат отличаться, если на странице есть эталонная страница

makdu 06.11.2018 05:05

Если это asp.net и веб-формы, возможно, для изменения имени, проверьте HTML-код, отображаемый на странице, просмотрев исходный код в браузере.

Jon P 06.11.2018 05:12

В исходном виде я не могу найти ни одну из переменных, указанных в скрипте. Это веб-форма asp.net @JonP

makdu 06.11.2018 05:17

Какие идентификаторы у tbody's при просмотре исходников?

Jon P 06.11.2018 05:50

Также проверьте идентификатор отображаемого раскрывающегося списка

Jon P 06.11.2018 06:34

Не могу найти элемент кузова. Выпадающий список отображается нормально '<select id = "ddlIncomeAssement"> <option value = "FULLDOCPAYG"> FULL DOC-PAYG </option> <option value = "FULLDOCSELF"> FULL DOC-SELF EMPLOYED </option> <option value = "LITEDOC"> LITE DOC </option> <option value = "RENTALINCOME"> ПРОВЕРКА И УЧЕТ ДОХОДА ОТ АРЕНДЫ </option> </select> </div>

makdu 06.11.2018 21:56

Ну вот и ваша проблема, если тегов tbody нет, это не сработает.

Jon P 06.11.2018 23:12

Почему элемент tbody отсутствует в источнике просмотра. Я удалил главную страницу и попробовал. но тот же эффект

makdu 06.11.2018 23:54

Это был бы совершенно новый вопрос, поскольку мы понятия не имеем, как вы создаете таблицу. Задайте новый вопрос, не обновляйте этот.

Jon P 07.11.2018 00:16
Поведение ключевого слова "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) для оценки ваших знаний,...
0
12
110
2

Ответы 2

Вы не можете просто иметь один корпус - вам нужно поместить в него <tr><td>. См. Пример ниже:

$("#ddlIncomeAssement").change(function () {
    var status = this.value;
    alert(status);

    if (status == "FULLDOCPAYG") {
        $('#FullDocPayg').show();
        $('#FullDocSelf').hide();
        $('#LiteDoc').hide();
        $('#RentalIncome').hide();
    }
    else if (status == "FULLDOCSELF") {
        $('#FullDocPayg').hide();
        $('#FullDocSelf').show();
        $('#LiteDoc').hide();
        $('#RentalIncome').hide();
    }
    else if (status == "LITEDOC") {
        $('#FullDocPayg').hide();
        $('#FullDocSelf').show();
        $('#LiteDoc').show();
        $('#RentalIncome').hide();

    }
    else if (status == "RENTALINCOME") {
        $('#RentalIncome').show();
        $('#FullDocPayg').hide();
        $('#FullDocSelf').show();
        $('#LiteDoc').show();
    }
    // alert(status);
});
#FullDocPayg{display:none;}
#FullDocSelf{display:none;}
#LiteDoc{display:none;}
#RentalIncome{display:none;}
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id = "ddlIncomeAssement">
  <option value = "FULLDOCPAYG">FULL DOC-PAYG</option>
  <option value = "FULLDOCSELF">FULL DOC- SELF EMPLOYED</option>
  <option value = "LITEDOC">LITE DOC</option>
  <option value = "RENTALINCOME">RENTAL INCOME VERIFICATION AND ASSEMENT</option>
</select>

<br>

<table>
  <tbody id = "FullDocPayg"><tr><td>This is FullDocPayg</td></tr></tbody>
  <tbody id = "FullDocSelf"><tr><td>Full Doc Self</td></tr></tbody>
  <tbody id = "LiteDoc"><tr><td>Lite Doc</td></tr></tbody>
  <tbody id = "RentalIncome"><tr><td>Rental Income</td></tr></tbody>
</table>

Хм. Если это действительно является причиной проблемы, возможно, я немного поспешил попытаться исправить вопрос. Я добавил строки и инкапсулирующий <table> в бит HTML OP, но я предположил, что они были слишком краткими, например, ради: P

Tyler Roper 06.11.2018 04:50

Я не уверен, что мне не хватает. он не работает на странице. Может ли результат отличаться, если на странице есть эталонная страница

makdu 06.11.2018 05:05
tbody отсутствует в источнике просмотра. почему это произошло
makdu 06.11.2018 23:57

Я не рассматривал вашу настоящую проблему, потому что мы можем ее значительно упростить.

Мы можем использовать атрибут данных, который содержит отображаемые элементы. Скройте все элементы tbody, затем покажите те, которые нам нужны.

$(function() {
  $("#ddlIncomeAssement").change(function() {
    $("#target tbody").hide();
    $($(this).children(":selected").data("display")).show();    
  });
});
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id = "ddlIncomeAssement">
  <option value = "FULLDOCPAYG" data-display = "#FullDocPay">FULL DOC-PAYG</option>
  <option value = "FULLDOCSELF" data-display = "#FullDocSelf">FULL DOC- SELF EMPLOYED</option>
  <option value = "LITEDOC" data-display = "#FullDocSelf,#LiteDoc">LITE DOC</option>
  <option value = "RENTALINCOME" data-display = "#FullDocSelf,#LiteDoc,#RentalIncome">RENTAL INCOME VERIFICATION AND ASSEMENT</option>
</select>

<table id = "target">
  <tbody id = "FullDocPayg">
    <tr>
      <td>FULLDOCPAYG</td>
    </tr>
  </tbody>
  <tbody id = "FullDocSelf">
    <tr>
      <td>FULLDOCSELF</td>
    </tr>
  </tbody>
  <tbody id = "LiteDoc">
    <tr>
      <td>LITEDOC</td>
    </tr>
  </tbody>
  <tbody id = "RentalIncome">
    <tr>
      <td>RENTALINCOME</td>
    </tr>
  </tbody>
</table>

Логика OP кажется немного более сложной. Например, при выборе «Доход от аренды» отображается три элементов <tbody>, а не только «Доход от аренды».

Tyler Roper 06.11.2018 04:54

@TylerRoper, да, я только что это заметил!

Jon P 06.11.2018 05:13

В источнике просмотра отсутствует элемент tbody. любая подсказка

makdu 06.11.2018 23:57

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