Javascript innerhtml de case à cocher

Eh bien, j'ai des cases à cocher avec id = '0', '1', '2', '3', etc. Donc, j'ai besoin d'obtenir le texte des cases à cocher. Voici le code des cases à cocher en PHP.

'<input id="'.$i.'"type="checkbox" name="option1" value="a1" onclick="checkYears()">'.$years[$i].'</input> 

Je dois donc obtenir $ années [$ i] -value. J'utilise ce code.

 while (bool==false) { if (document.getElementById(i)!=null) { if (document.getElementById(i).checked) { years.push(1); yearsValue.push(document.getElementById(i).innerHTML); document.getElementById(i).innerText="WORKS"; console.log(yearsValue[i]); } else { years.push(0); yearsValue.push(document.getElementById(i)).innerHTML); console.log(yearsValue[i]); } } else { bool=true; } i++; } 

0 et 1 sont ajoutés ok, mais quand j'essaie d'utiliser innerHTML, il existe des valeurs indéfinies dans consle.

Aucune suggestion?

InnerHTML obtient le contenu HTML d'un élément. C'est-à-dire les données entre la balise de départ et la balise finale. Les entrées sont des éléments vides, ils ne peuvent pas contenir de contenu (en HTML (par opposition à XHTML), ils ne peuvent pas non plus avoir une balise finale). Votre code HTML est invalide et vous devez utiliser un validateur .

Vous voulez probablement quelque chose comme ça:

 <label> <input type="checkbox"> <span>Text label</span> </label> 

Ensuite, vous pourriez obtenir:

 checkbox.parentNode.innerHTML; 

ou

 checkbox.parentNode.getElementsByTagName('span')[0].innerHTML 

Un élément de saisie n'a pas de innerhtml car l'élément est supposé être auto-fermeture:

<input type="checkbox" name="checkbox" value="1" />

Vous ne pouvez pas parce que <input> n'a pas de balise proche, donc il n'a pas de propriété innerHTML :

Doit avoir une étiquette de départ et ne doit pas avoir de balise de fin.

De MDN .

Je vous recommande d'utiliser une combinaison d' étiquette et d'entrée.

Idéalement, un élément de saisie n'aura aucun innerHTML. Cela signifie que vous ne pouvez pas contenir un contenu html inclus dans l'élément de saisie. Vous pouvez simplement avoir une valeur d'élément de saisie.