GetElementsByName() [Résolu]

Signaler
Messages postés
507
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
22 juin 2012
-
Messages postés
1044
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
-
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...

4 réponses

Messages postés
1044
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
6
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é
}
Messages postés
507
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
22 juin 2012
2
Cela fonction à merveille un grand merci à toi ;)

Je cloture.

L0rD...
Messages postés
507
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
22 juin 2012
2
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...
Messages postés
1044
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
6
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é
}