GetElementsByName() [Résolu]

xactise 507 Messages postés mardi 18 février 2003Date d'inscription 22 juin 2012 Dernière intervention - 19 nov. 2009 à 18:01 - Dernière réponse : Arto_8000 1051 Messages postés lundi 7 mars 2005Date d'inscription 13 juillet 2010 Dernière intervention
- 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
Arto_8000 1051 Messages postés lundi 7 mars 2005Date d'inscription 13 juillet 2010 Dernière intervention - 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é 97 internautes ce mois-ci

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

Je cloture.

L0rD...
Commenter la réponse de xactise
xactise 507 Messages postés mardi 18 février 2003Date d'inscription 22 juin 2012 Dernière intervention - 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
Arto_8000 1051 Messages postés lundi 7 mars 2005Date d'inscription 13 juillet 2010 Dernière intervention - 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.