Возвращает предупреждение, если значение становится пустым в js

#javascript

#javascript

Вопрос:

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

 $(document).on("click", ".desativ_forn", function(){
  var desaf = document.querySelector('input[name="update"]:checked').value;
  if(desaf == null){
        alert("Tem de selecionar um Fornecedor!");
        $('#minhaDiv44').show();
   }else{
   }
 });
 

Я также пробовал это так:

 $(document).on("click", ".desativ_forn", function(){
  if(document.querySelector('input[name="update"]:checked').value == null){
        alert("Tem de selecionar um Fornecedor!");
        $('#minhaDiv44').show();
   }else{
  var desaf = document.querySelector('input[name="update"]:checked').value;
  
   }
 });
 

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

Неперехваченная ошибка типа: не удается прочитать свойство ‘value’ null

Предполагалось, что если ни одна строка не была выбрана, оповещение вернет

HTML:

 $(function () { 
$('.limp-forn').on("click", function() {
$("#tabfor tbody").empty();
  $.getJSON('perfilfor.php', function (data) {

    var linha = ``; 

    for (var i = 0; i < data.length; i  ) { 
       Id = data[i][0];
       DataRegisto = data[i][1];
       Fornecedor = data[i][2];
       Nif = data[i][3];
       Contato = data[i][4];
       Morada = data[i][5];
       Postal = data[i][6];
       Email = data[i][7];
       Descricao = data[i][8];
       Nome = data[i][9];
   
       linha  = `<tr class="table__row">
       <td  class="table__content" data-heading="Atualizar"><input type="radio" name="update" id="update" value="${ Id }"></td>    
       <td class="table__content" data-heading="Registo"><span style="color:#ffffff">${ DataRegisto }</span></td> 
       <td class="table__content" data-heading="Fornecedor"><span style="color:#ffffff">${ Fornecedor }</span></td>
       <td class="table__content" data-heading="NIF"><span style="color:#ffffff">${ Nif }</span></td>
       <td class="table__content" data-heading="Contato"><span style="color:#ffffff">${ Contato }</span></td> 
       <td class="table__content" data-heading="Morada"><span style="color:#ffffff">${ Morada }</span></td>
       <td class="table__content" data-heading="CEP"><span style="color:#ffffff">${ Postal }</span></td> 
       <td class="table__content" data-heading="Email"><span style="color:#ffffff">${ Email }</span></td>
       <td class="table__content" data-heading="Ativo"><span style="color:#ffffff">${ Descricao }</span></td>
       <td class="table__content" data-heading="Colaborador"><span style="color:#ffffff">${ Nome }</span></td>     
       </tr>`; 
    }
});
});
});
 

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

1. Можете ли вы включить html-код?

2. можете ли вы также поделиться своим HTML?

3. .querySelector() возвращает null , когда нет элемента, который соответствовал бы данному селектору, не .value

4. @tonoslfx Я добавил html, который построен с помощью динамической таблицы в js.

5. @Gilang Pratama Я добавил html, который построен с помощью динамической таблицы в js.

Ответ №1:

Попробуйте это:

 $(document).on("click", ".desativ_forn", function(){
  let desaf = document.querySelector('input[name="update"]:checked');
  if(!desaf){
        alert("Tem de selecionar um Fornecedor!");
        $('#minhaDiv44').show();
   }else{
   }
 })
 

@Andreas прав. Как он сказал .querySelector() , вероятно, возвращает значение null, и если мы хотим проверить значение, сначала мы должны проверить, является ли элемент defined .