Afficher un message
Vieux 10/07/2007, 18h07   #3
Niko
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: extension du prototype

O.L. a écrit :
> Niko a pensé très fort :
>> Bonjour,
>>
>> Est-ce que quelqu'un aurait une idée de la raison pour laquelle le
>> code suivant fonctionne sur FF et pas sur IE ?
>>
>> Object.prototype.find_Attribute_By_Name=function(a ttrname){
>> var attrname;
>> var x=0;
>> var ret=false;
>> var limit=this.length;
>> while(x<limit)
>> {
>> if (this[x].nodeName==attrname)
>> {
>> ret=this[x];
>> x=limit;
>> }
>> else x++;
>> }
>> return ret;
>> }
>>
>> var val_attr=cell.attributes.find_Attribute_By_Name('n ame').nodeValue;
>>
>> Dans ma page , j'ai un tableau HTML avec une cellule définie comme suit :
>>
>> <td name="Nom_de_la_cellule" id="id_de_la_cellue">Contenu</td>

>
> Z'êtes sûr que nodeName est supporté par IE ? On dirait un truc trop
> standard pour lui ...


C'est sans doute une partie de l'explication mais c'est pas nodeName
qui est en cause car si je transforme le code en une fonction, elle
marche aussi sur IE
function find_Attributes_By_Name(obj, attrname){
var attrname;
var x=0;
var ret=false;
var limit=obj.length;
while(x<limit)
{
if (obj[x].nodeName==attrname)
{
ret=obj[x];
x=limit;
}
else x++;
}
return ret;
}

appelée de la sorte :

attr=find_Attributes_By_Name(cell.attributes,"name ");
>
> Sinon je suis pas sûr d'avoir compris l'exemple.
> ret=this[x]; => va retourner un objet, or vous dites :
>> La fonction find_Attribute_By_Name('name') doit normalement me
>> retourner "Nom_de_la_cellule".

Effectivement, au temps pour moi, c'est bien l'objet qui est retourné

je récupère ensuite la valeur par var val = attr.nodeValue;
>
> En plus la fonction semble devoir cumuler les résultats avec le while(),
> mais là les résultats écrasent à chaque fosi les précédents, et un seul
> est finalement renvoyé.
>


en fait non puisqu'elle s'arrête à la première occurrence trouvée grace
au x=limit qui provoque la fin de la boucle while ou retourne false dans
le cas ou aucune occurrence n'est trouvée.
  Réponse avec citation
 
Page generated in 0,07659 seconds with 9 queries