Как правильно переключаться между div в веб-форме, используя это решение Javascript?

1

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

Работает правильно:

  1. На дисплее сначала не отображается div.

  2. Кроме того, div с ID = "repIfChoose" отображается, когда я нажимаю переключатель рядом с "Выбрать".

Не работает правильно:

  1. Div с ID = "repIfAdd" не отображается, когда я нажимаю переключатель рядом с надписью "Добавить".

  2. Как только div с ID = "repIfChoose" сначала отображается, ничего не происходит, когда я переключаюсь между переключателями после этого (это означает, что repIfChoose div не скрыт, а div repIfAdd не отображается).

Я знаю, что в JQuery могут быть более простые решения, но я предпочел бы сделать это в javascript. Может ли кто-нибудь помочь мне решить две ошибки выше и любые другие ошибки, которые вы могли бы заметить? Спасибо.

<!DOCTYPE html>
<html>

<head></head>

<body>

  <!--Radio button to switch between choose and add sales representative (choose default)-->
  Choose <input type="radio" onclick="repVisible();" id="chooseInput" name="repRadio">
  <br><br> Add <input type="radio" onclick="repVisible();" id="addInput" name="repRadio">

  <div class="form-group" id="repIfChoose" style="display:none">
    <label>Choose Sales Representative</label>
    <select name="SalesRep">
      <option value="" disabled selected>Choose Sales Representative</option>
      <option value="">Adam</option>
      <option value="">Bill</option>
      <option value="">Carl</option>
    </select>
  </div>

  <div class="form-group" id="repIfAdd" style="display:none">
    <label>Add Sales Representative</label>
    <input type="text" placeholder="e.g. Alex Branson" name="SalesRep">
  </div>

  <script>
    function repVisible() {
      if (document.getElementById('chooseInput').checked) {
        document.getElementById('repIfChoose').style.display = 'block';
        document.getElementById('repifAdd').style.display = 'none';
      }
      if (document.getElementById('addInput').checked) {
        document.getElementByID('repIfChoose').style.display = 'none';
        document.getElementByID('repIfAdd').style.display = 'block';
      }
    }
  </script>

</body>

</html>
Теги:
function
display

3 ответа

1
Лучший ответ

У вашего getElementById() было несколько капиталов D's; кроме того, у вас в именах идентификаторов были проблемы с случаем. В противном случае работает:

https://jsfiddle.net/4qswkyLp/

Обязательно используйте консоль разработчика в своем браузере для отладки кода, который легко можно использовать для использования F12 на ПК, для большинства браузеров.

1

У вас плохие опечатки... исправьте их и дайте мне знать, если это то, что вы ищете.

<!DOCTYPE html>
<html>
<head></head>
<body>

    <!--Radio button to switch between choose and add sales representative (choose default)-->
    Choose <input type="radio" onclick="repVisible();" id="chooseInput" name="repRadio">
    <br><br>
    Add <input type="radio" onclick="repVisible();" id="addInput" name="repRadio">

    <div class="form-group" id="repIfChoose" style="display:none">
        <label>Choose Sales Representative</label>
        <select name="SalesRep">
            <option value="" disabled selected>Choose Sales Representative</option>                         
            <option value="">Adam</option>
            <option value="">Bill</option>
            <option value="">Carl</option>
        </select>
    </div>

    <div class="form-group" id="repIfAdd" style="display:none">
        <label>Add Sales Representative</label>
        <input type="text" placeholder="e.g. Alex Branson" name="SalesRep">
    </div>              

    <script>    
        function repVisible() {
            if (document.getElementById('chooseInput').checked) {
                document.getElementById('repIfChoose').style.display = 'block';
                document.getElementById('repIfAdd').style.display = 'none';
            }
            if  (document.getElementById('addInput').checked){ 
                document.getElementById('repIfChoose').style.display = 'none';
                document.getElementById('repIfAdd').style.display = 'block';
            }   
        }
    </script>

</body>
</html>
  • 0
    Не могли бы вы указать в своем ответе опечатки, которые увидят будущие пользователи?
  • 1
    На самом деле я бы порекомендовал удалить вопрос ... Это такая распространенная ошибка, которая не очень помогает другим.
Показать ещё 3 комментария
0

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

  1. document.getElementById используется с неправильным случаем, например getElementBy ID
  2. имя идентификатора должно использоваться с тем же именем, что и с учетом регистра - должно быть repIfAdd вместо repifAdd

        function repVisible() {
            if (document.getElementById('chooseInput').checked) {
                document.getElementById('repIfChoose').style.display = 'block';
                document.getElementById('repIfAdd').style.display = 'none';
            }
            if (document.getElementById('addInput').checked){ 
                document.getElementById('repIfChoose').style.display = 'none';
                document.getElementById('repIfAdd').style.display = 'block';
            }   
        }
<head></head>
<body>

    <!--Radio button to switch between choose and add sales representative (choose default)-->
    Choose <input type="radio" onclick="repVisible();" id="chooseInput" name="repRadio">
    <br><br>
    Add <input type="radio" onclick="repVisible();" id="addInput" name="repRadio">

    <div class="form-group" id="repIfChoose" style="display:none">
        <label>Choose Sales Representative</label>
        <select name="SalesRep">
            <option value="" disabled selected>Choose Sales Representative</option>                         
            <option value="">Adam</option>
            <option value="">Bill</option>
            <option value="">Carl</option>
        </select>
    </div>

    <div class="form-group" id="repIfAdd" style="display:none">
        <label>Add Sales Representative</label>
        <input type="text" placeholder="e.g. Alex Branson" name="SalesRep">
    </div>              



</body>

образец кода - https://codepen.io/nagasai/pen/MGbPpv

Ещё вопросы

Сообщество Overcoder
Наверх
Меню