web-dev-qa-db-fra.com

Obtenir la valeur sélectionnée de la liste déroulante à l'aide de JavaScript

J'ai le code HTML suivant

<form>
  <div class="answer1wrap">
    <select id="mySelect">
      <option value="void">Choose your answer</option>
      <option value="To measure time">To measure time</option>
      <option value="To measure distance">To measure distance</option>
      <option value="To measure volume">To measure volume</option>
    </select>
  </div>
</form>

<button class="btn btn-default" id="checkbtn" onclick="answers();" type="button"><span    class="glyphicon glyphicon-check"></span> Check answers</button>

J'ai aussi le javascript

function answers()
{
  var selectedanswer=document.getElementById("mySelect").selectedIndex;

  if (document.getElementsByTagName("option")[selectedanswer].value=="To measure time");{
    alert("Thats correct"); 
  }
}

J'espérais que lorsque le bouton serait enfoncé, il vérifierait si l'option "mesurer le temps" était sélectionnée et m'avertir UNIQUEMENT si cette option était sélectionnée. Cependant, quelle que soit l'option sélectionnée, l'alerte est toujours affichée.

Des idées?

19
craig

Peut-être que c'est la virgule dans votre condition if.

function answers() {
var answer=document.getElementById("mySelect");
 if(answer[answer.selectedIndex].value == "To measure time.") {
  alert("That's correct!"); 
 }
}

Vous pouvez aussi l'écrire comme ça.

function answers(){
 document.getElementById("mySelect").value!="To measure time."||(alert('That's correct!'))
}
20
cocco

Essayer

var e = document.getElementById("mySelect");
var selectedOp = e.options[e.selectedIndex].text;
5
Derk Arts

La première chose que j’ai remarquée est que vous avez un point-virgule juste après votre parenthèse fermante pour votre déclaration if );

Vous devriez également essayer de nettoyer votre déclaration if en déclarant une variable pour la réponse séparément.

function answers() {

var select = document.getElementById("mySelect");
var answer = select.options[select.selectedIndex].value;

    if(answer == "To measure time"){
        alert("Thats correct"); 
    }

}

http://jsfiddle.net/zpdEp/

5
Wez

Jsbin de travail: http://jsbin.com/ANAYeDU/4/edit

Bit principal:

function answers()
{

var element = document.getElementById("mySelect");
var elementValue = element.value;

if(elementValue == "To measure time"){
  alert("Thats correct"); 
  }
}
3
bitoiu