За последние 24 часа нас посетили 22883 программиста и 1235 роботов. Сейчас ищут 722 программиста ...

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

Тема в разделе "JavaScript и AJAX", создана пользователем Dimon2x, 14 сен 2019.

  1. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    184
    Есть несколько блоков, которые перебираются циклом. В них содержатся инпуты и label, при нажатии на input, в консоль попадает input поле и label для него, в label нету атрибута value, а в input есть и в переменную я записываю значение атрибута value для input, но так как его нету в label, то в переменную попадает пустое значение.

    И я решил сделать условие, что бы не попадало пустое значение, можно ли как то этот код улучшить?

    Код полностью запускаемый.

    HTML:
    1. <div class="options">
    2.         <input type="hidden" value="18" class="questionId" name="questionId">
    3.           <input type="radio" name="r-1" id="radio-1" value="1" title=""/>
    4.           <label for="radio-1" class="false-answer">Да</label>
    5.           <input type="radio" name="r-1" id="radio-2" value="2" title=""/>
    6.           <label for="radio-2" class="true-answer">Нет</label>
    7.         </div>
    8.  
    9. <div class="options">
    10.             <input type="hidden" value="17" class="questionId" name="questionId">
    11.           <input type="radio" name="r-2" id="radio-3" value="1" title=""/>
    12.           <label for="radio-3" class="false-answer">Да</label>
    13.           <input type="radio" name="r-2" id="radio-4" value="2" title=""/>
    14.           <label for="radio-4" class="true-answer">Нет</label>
    15.           <input type="radio" name="r-2" id="radio-5" value="3" title=""/>
    16.           <label for="radio-5" class="false-answer">Движение разрешено только по обочине.</label>
    17.         </div>
    18.  
    19. <div class="options">
    20.         <input type="hidden" value="16" class="questionId" name="questionId">
    21.           <input type="radio" name="r-3" id="radio-6" value="1" title=""/>
    22.           <label for="radio-6" class="false-answer">Да</label>
    23.           <input type="radio" name="r-3" id="radio-7" value="2" title=""/>
    24.           <label for="radio-7" class="true-answer">Нет</label>
    25.         </div>
    Код (Javascript):
    1. var ans = document.querySelectorAll('.options');
    2.  
    3.     ans.forEach(function (element, i) {
    4.  
    5.         ans[i].addEventListener('click', function (e) {
    6.          var inputs = e.target.closest('.options');
    7.          var idQuestion = inputs.getElementsByClassName("questionId")[0].value;
    8.          
    9.         var answer = '';
    10.          
    11.            if(e.target.hasAttribute('value')) {
    12.              answer = e.target.value;
    13.            }
    14.  
    15.             else {
    16.                 return; // что бы не попадало пустое значение
    17.             }
    18.  
    19.         console.log(answer);
    20.      
    21. })
    22.  
    23.     })
     
  2. villiwalla

    villiwalla Активный пользователь

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    я не понимаю что ты хочешь достичь но провангую
    Код (Javascript):
    1. let answers = document.querySelectorAll('.options');
    2.      answers.forEach((answer, idx) => {
    3.       answer.addEventListener('click', getAnswer);
    4.      });
    5.  
    6. function getAnswer(e) {
    7. let answer = null;
    8.  if(e.currentTarget.tagName == 'INPUT') {
    9.    answer = document.querySelector(`label[for='${e.currentTarget.id}']`);
    10.    return answer;
    11.  }
    12. }
     
    yanuzay нравится это.
  3. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    184
    @villiwalla В принципе тоже самое
     
  4. villiwalla

    villiwalla Активный пользователь

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    ага, без возни пальцем по говну
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.751
    Симпатии:
    1.322
    Адрес:
    Лень
  6. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    Код (Javascript):
    1. $('.options').on('click','input',(e => console.log(e.target.value)));