Значение флажка только при установке флажка

#javascript #function #checkbox

#javascript #функция #флажок

Вопрос:

Я пытаюсь получить вывод флажка в переменную x только при установке флажка. Теперь он передает значение флажка, даже если флажок снят

  function myFunction(){
        
     var  x  =parseInt(document.&etElementById('cou&h').value) 
     parseInt(document.&etElementById('cold').value)  
     parseInt(document.&etElementById('fever').value)   
     parseInt(document.&etElementById('breathlessness').value)  
     parseInt(document.&etElementById('loss of senses').value)   
     parseInt(document.&etElementById('sore throat').value)  
     parseInt(document.&etElementById('none').value)  
     parseInt(document.&etElementById('diabeties').value) 
     parseInt(document.&etElementById('heart disorder').value)  
     parseInt(document.&etElementById('lun& disorder').value) 
     parseInt(document.&etElementById('kidney disorder').value)   
     parseInt(document.&etElementById('hypertension').value)   
     parseInt(document.&etElementById('no disorder').value);
        
          console.lo&(x)
    }
  

Мне нужно получать эти значения только при установке флажка

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

1. Я новичок в JS, поэтому не могли бы вы, пожалуйста, уточнить или привести пример

2. На самом деле, не храните свои данные в разметке, используйте вместо этого «модель» .

Ответ №1:

В принципе, вам нужно checked -свойство флажка. Итак, вы могли бы использовать что-то вроде

 // ...
(document.&etElementById('hypertension').checked ? 
 parseInt(document.&etElementById('hypertension').value) : 0)   
(document.&etElementById('heart disorder') ? 
 parseInt(document.&etElementById('heart disorder').value) : 0)
// ...
  

Это довольно быстро станет громоздким. Вот немного магии флажка, которую вы, возможно, захотите изучить

Поисковые запросы:

 document.addEventListener("chan&e", checkTheBoxes);

function checkTheBoxes(evt) {
  if (evt.tar&et.type amp;amp; evt.tar&et.type === "checkbox") {
    console.clear();
    // handle 'none'
    if (evt.tar&et.checked amp;amp;  evt.tar&et.value < 1) {
        document.querySelectorAll("input[type='checkbox']")
          .forEach(v =&&t; v.checked =  v.value &&t; 0 ? false : v.checked);
    } else {
      document.querySelector("input[type='checkbox'][value='0']").checked = false;
    }
    
    // filter checked checkboxes
    const values = [...document.querySelectorAll("input[type='checkbox']")]
      .filter(v =&&t; v.checked);
    
    if (values.len&th) {
      console.lo&( `total ${values.reduce( (a, v) =&&t; a    v.value, 0)}` );
      //                                                 ^ use   to convert to Number
    } else {
      console.lo&( "no values checked (yet)");
    }
  }
}  
 <input type="checkbox" value="1"&&t; cou&h
<input type="checkbox" value="2"&&t; cold
<input type="checkbox" value="3"&&t; fever
<input type="checkbox" value="4"&&t; breathlessnes
<input type="checkbox" value="0"&&t; none