Je me rends compte qu'il s'agit d'une vieille question, mais je vais poster la solution pour mon cas d'utilisation, au cas où d'autres personnes se trouveraient dans la même situation que moi lors de l'implémentation Réponse de James Hill (ci-dessus) .
J'ai trouvé cette question en essayant de résoudre le même problème. La réponse de James m'a permis d'atteindre 90%. Cependant, dans mon cas d'utilisation, la sélection de l'élément dans la liste déroulante déclenche également une action sur la page à partir de la liste déroulante. onchange
événement. Le code de James tel qu'il est écrit ne déclenche pas cet événement (du moins dans Firefox, avec lequel je faisais mes tests). En conséquence, j'ai apporté la modification mineure suivante :
function setSelectedValue(object, value) {
for (var i = 0; i < object.options.length; i++) {
if (object.options[i].text === value) {
object.options[i].selected = true;
object.onchange();
return;
}
}
// Throw exception if option `value` not found.
var tag = object.nodeName;
var str = "Option '" + value + "' not found";
if (object.id != '') {
str = str + " in //" + object.nodeName.toLowerCase()
+ "[@id='" + object.id + "']."
}
else if (object.name != '') {
str = str + " in //" + object.nodeName.toLowerCase()
+ "[@name='" + object.name + "']."
}
else {
str += "."
}
throw str;
}
Notez le object.onchange()
que j'ai ajouté à la solution originale . Il appelle le gestionnaire pour s'assurer que l'action sur la page se produit.
Editar
Ajout d'un code permettant de lever une exception si l'option value
n'est pas trouvé ; ceci est nécessaire pour mon cas d'utilisation.
0 votes
Duplicata possible de sélectionner <sélection> l'élément par valeur
1 votes
Consultez cet article : javascriptstutorial.com/blog/
0 votes
Comment faire s'il n'y a pas d'ID d'élément ? J'ai le nom de l'élément.
0 votes
@RiponAlWasim vous pouvez utiliser document.getElementsByName var element = document.getElementsByName("Mobility")[0] ;