J'ai un span avec id = "availableSeats" et un bouton avec id = "confirmButton". Je veux vérifier quand availableSeats est supérieur à 0, puis supprimer l'attribut désactivé du confirmButton.

Cela ne fonctionne pas:

function checkSeats() {
var freeSeats = document.getElementById("availableSeats").value;

if ( !(freeSeats > 0)) {
document.getElementsById("confirmButton")[0].removeAttribute("disabled", "disabled"); 
}
0
user9758888 27 janv. 2019 à 16:27

5 réponses

Meilleure réponse

Quelques problèmes:

  • Comme votre élément est un span, vous devez utiliser la propriété textContent.

  • Comme vous voulez interpréter cette valeur comme un nombre, vous devez convertir la chaîne en nombre

  • getElementById est un singulier (pas de s, pas de tableau).

  • La méthode removeAttribute ne prend qu'un seul argument.

function checkSeats() {
  var freeSeats = document.getElementById("availableSeats").textContent;
//                                                          ^^^^^^^^^^
  if (+freeSeats > 0) {
//    ^^
    document.getElementById("confirmButton").removeAttribute("disabled");
//                        ^^                ^^               ^^^^^^^^
  }
}

checkSeats();
<span id="availableSeats">10</span>

<button id="confirmButton" disabled>confirm</button>
2
trincot 27 janv. 2019 à 13:36

Vous pouvez essayer ceci

if ( parseInt(freeSeats) > 0) {
document.getElementById('confirmButton').disabled = false;
}
0
Rathnakara S 28 janv. 2019 à 05:02

La valeur que vous obtenez des éléments d'entrée sont toujours des chaînes, vous devez donc convertir la valeur en nombre à l'aide de parseInt ou parseFloat avant de la comparer.

function checkSeats() {
  var freeSeats = document.getElementById("availableSeats").value;

  if (parseInt(freeSeats) > 0) {
    document.getElementsById("confirmButton")[0].removeAttribute("disabled", "disabled"); 
  }
}
-1
Mathias W 27 janv. 2019 à 13:32

Vous comparez une valeur d'un élément span, qui n'a de valeur que si vous l'avez affectée. Faites-en une balise input et cela devrait fonctionner correctement.
Par exemple: <input id="availableSeats" type="number">
Quelqu'un peut y entrer un nombre, et lorsque cette personne appuie sur le bouton, il exécutera votre code avec la valeur de l'entrée.

-1
Brent Meeusen 27 janv. 2019 à 13:31

Lorsque vous accédez à la valeur d'entrée, son type est une chaîne. Vous devez le convertir en nombre à l'aide de Number (valeur) ou parseInt (nombre)

if (parseInt(freeSeats) > 0) {
document.getElementsById("confirmButton")[0].removeAttribute("disabled", "disabled"); 
}
1
Maheer Ali 27 janv. 2019 à 13:41