11496 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

En dehors d'opérer des actions basiques sur base du getElementById, je ne suis pas très à l'aise en JS...
Me voilà confrontée à un besoin qui appelle une fonction moins spécifique.
J'ai un grand nombre de champs requis dans un formulaire, et je souhaiterais les cibler tous d'un coup avec un getElementsByClassName...

J'ai tenté une opération qui ne porte pas ses fruits, pouvez-vous me dire ce qui fait que je ne parviens à rien?

function champsRequis() {
var requis = document.getElementsByClassName("requis");
var requischamp = document.getElementsByClassName("requis")[0].value;
alert(requischamp);
}


Concrètement, j'ai donc mis à mes input des classes "requis" quand les champs sont obligatoires,
et j'essaie d'afficher la valeur de mon premier champ requis pour voir s'il la retrouve (en guise de test)...

Pour ce faire, j'ai appelé ma fonction dans mon input nom (premier champ, indicé 0) à coup d'onClick.
Sauf que je n'ai aucune alerte. Pas de réaction de la part de mon script...

Qu'est ce que je fais de travers, selon vous?

Merci pour votre aide !
Modifié par Reka (20 Dec 2013 - 10:08)
Je n'avais pas mis mon B majuscule dans ma fonction Smiley confused ... getElementByClassName
Je sors et je vais m'acheter des lunettes.
Pardon d'avoir pris de votre temps pour la lecture de cet inutile message.
Modérateur
Salut,

Erreur classique.... Souvent on oublie le S de element.

Sinon en lisant ta fonction, tu peux d'ores et déjà optimiser :

function champsRequis() {
	var requis = document.getElementsByClassName("requis");
	var requischamp = requis[0].value; 
	alert(requischamp);
}

Modifié par niuxe (20 Dec 2013 - 14:33)
Juste de passage, IE8 ne reconnaît pas getElementsByClassName mais plutôt querySelectorAll(".maClasse"). Après c'est IE8...
Combien de gens utilisent encore IE8 à l'heure actuelle? Trop, je suppose.
Quelle plaie...
Merci pour l'info.