GetElementsByName() [Résolu]

Messages postés
507
Date d'inscription
mardi 18 février 2003
Dernière intervention
22 juin 2012
- 19 nov. 2009 à 18:01 - Dernière réponse :
Messages postés
1051
Date d'inscription
lundi 7 mars 2005
Dernière intervention
13 juillet 2010
- 20 nov. 2009 à 14:57
Bonjours à tous,

J'ai une petite question :
Est-il possible d'utiliser la methode getElementsByName(); "hors document"

c'est à dire que je ne veux pas récupérer tous les résultats du document, mais uniquement ce compris dans un DIV (ou autre élement) en particulier.

J'ai éssayer sans espoir et par pure hasard

document.getElementById(id).getElementsByName(name);

Mais sa ne fonctionne bien évidement pas :)

Je sais pas si je suis clair :)

D'avance merci


L0rD...
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
1051
Date d'inscription
lundi 7 mars 2005
Dernière intervention
13 juillet 2010
- 20 nov. 2009 à 05:04
3
Merci
Si je me fies à la documentation de MDC, la méthode s'applique uniquement au document comme tel. On peut quand même contourner cette restriction avec quelques entourloupette.

Ceci devrait faire l'affaire comme tour de passe-passe :
Object.prototype.getElementsByName2 = function (name) {
var elements = document.getElementsByName(name);
var resultat = new Array();

for (i=0; i<elements.length; i++) {
if (elements[i].isChildOf(this)) {
resultat.push(elements[i]);
}
}

return resultat;
}

Object.prototype.isChildOf = function (parent) {
var child = this;
while (typeof (child = child.parentNode) != "undefined" && child != null) {
if (child == parent) {
return true;
}
}
return false;
}


Et pour l'utiliser :
var list = document.getElementById(id).getElementsByName2(name);

for (i=0; i<list.length; i++) {
// Pour chaque élément trouvé
}

Merci Arto_8000 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de Arto_8000
Messages postés
507
Date d'inscription
mardi 18 février 2003
Dernière intervention
22 juin 2012
- 20 nov. 2009 à 09:01
0
Merci
Cela fonction à merveille un grand merci à toi ;)

Je cloture.

L0rD...
Commenter la réponse de xactise
Messages postés
507
Date d'inscription
mardi 18 février 2003
Dernière intervention
22 juin 2012
- 20 nov. 2009 à 10:21
0
Merci
Yop je revien rapidement vers toi.

Sa fonctionne niquel par contre du coup j'obtiens des erreurs, avec d'autre script en l'occurence mootools (pour calendar) et animatedcollapse.

Tu as une idée du conflit ?

D'avance merci


L0rD...
Commenter la réponse de xactise
Messages postés
1051
Date d'inscription
lundi 7 mars 2005
Dernière intervention
13 juillet 2010
- 20 nov. 2009 à 14:57
0
Merci
Si tu as d'autres librairies qui écrasent aussi le prototype, c'est mieux de ne pas l'utiliser.

function getElementsByName (obj, name) {
var elements = document.getElementsByName(name);
var resultat = new Array();

for (i=0; i<elements.length; i++) {
if (isChildOf(elements[i], obj)) {
resultat.push(elements[i]);
}
}

return resultat;
}
function isChildOf (obj, parent) {
var child = obj;
while (typeof (child = child.parentNode) != "undefined" && child != null) {
if (child == parent) {
return true;
}
}
return false;
}


Et pour l'utiliser :
var list = getElementsByName(document.getElementById(id), name);

for (i=0; i<list.length; i++) {
// Pour chaque élément trouvé
}
Commenter la réponse de Arto_8000

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.