GetElementsByName()

Résolu
xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 - 19 nov. 2009 à 18:01
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre 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...

4 réponses

Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
20 nov. 2009 à 05:04
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é
}
3
xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 2
20 nov. 2009 à 09:01
Cela fonction à merveille un grand merci à toi ;)

Je cloture.

L0rD...
0
xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 2
20 nov. 2009 à 10:21
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...
0
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
20 nov. 2009 à 14:57
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é
}
0
Rejoignez-nous