acces aux elements d'une frame

Le
Julian
salut,

j'ai un frameset qui contient deux frames. j'aimerais que la premiere
indique le nombre de formulaires contenues dans la seconde.
je procede comme ceci :

/* dans la frame 1 */
/* reference a la 2eme frame */
var nb = parent.frames[1].document.forms.length;

j'obtiens 0, alors que la 2eme frame contient un formulaire. j'aurais
voulu aller plus loin en initialisant un objet dans la frame 1 avec le
formulaire de la frame 2 :

/* dans la frame 1 */
var frm = parent.frames[1].document.forms[0];

mais si je me plante deja dans l'obtention du nombre de formulaire, je
ne risque pas d'aller bien loin.


merci d'avance pour votre aide a tous,

--
Julian
"When you look long into an abyss,
the abyss also looks into you." --Friedrich Nietzche

  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
Sébastien
Le #79799
j'ai un frameset qui contient deux frames. j'aimerais que la premiere
indique le nombre de formulaires contenues dans la seconde.
je procede comme ceci :

/* dans la frame 1 */
/* reference a la 2eme frame */
var nb = parent.frames[1].document.forms.length;

j'obtiens 0, alors que la 2eme frame contient un formulaire.


Ça m'a pourtant l'air correct.
Je viens de tester sous IE6 et Moz :

index.html
==================================================== <frameset cols="200,*">
</frameset>
====================================================
gauche.html
==================================================== <input type="button" value="nb forms"
onclick="alert(parent.frames[1].document.forms.length)">
====================================================
droite.html
==================================================== <form></form>
<form></form>
====================================================
Et le clique sur "nb forms" me donne bien "2"

ASM
Le #79550

mais si je me plante deja dans l'obtention du nombre de formulaire, je
ne risque pas d'aller bien loin.


tu te planteras moins
si tu attends que la page 2 soit chargée dans la frames[1]

c a d que 'nb' ne doit être déterminé qu'après le chargement
de la page qui contient les forms

(comme dans l'exemple donné par Sebastien)

--
*******************************************************
Stéphane MORIAUX et son vieux Mac
Aide Pages Perso (images & couleurs, formulaire, CHP)
http://perso.wanadoo.fr/stephane.moriaux/internet/
*******************************************************

Julian
Le #79548
Sébastien wrote:
j'ai un frameset qui contient deux frames. j'aimerais que la premiere
indique le nombre de formulaires contenues dans la seconde.
je procede comme ceci :

/* dans la frame 1 */
/* reference a la 2eme frame */
var nb = parent.frames[1].document.forms.length;

j'obtiens 0, alors que la 2eme frame contient un formulaire.



Ça m'a pourtant l'air correct.
Je viens de tester sous IE6 et Moz :

index.html
==================================================== > <frameset cols="200,*">
</frameset>
==================================================== >
gauche.html
==================================================== > <input type="button" value="nb forms"
onclick="alert(parent.frames[1].document.forms.length)">
==================================================== >
droite.html
==================================================== > <form></form>
<form></form>
==================================================== >
Et le clique sur "nb forms" me donne bien "2"


merci pour ta reponse. moi aussi cela me semblait correct. j'ai teste ta
solution et elle fonctionne comme prevu.

j'ai voulu encapsuler l'alert dans une fonction :

function test()
{ alert(parent.frames[1].document.forms.length);
}

appele via : <input type="button" name="test" value="test"
onClick="test()" />

la console javascript me dit que test() n'est pas une fonction
??

j'imagine que le probleme n'a plus rien a voir avec les frames...

(je suis sous firefox)

--
Julian
"When you look long into an abyss,
the abyss also looks into you." --Friedrich Nietzche


Sébastien
Le #79544
j'ai voulu encapsuler l'alert dans une fonction :

function test()
{ alert(parent.frames[1].document.forms.length);
}

appele via : <input type="button" name="test" value="test"
onClick="test()" />

la console javascript me dit que test() n'est pas une fonction
??


Je viens de reprendre mon test précédent avec le fichier gauche.html
modifié comme suit :

<script type="text/javascript">
function nbForms( ) {
alert(parent.frames[1].document.forms.length) ;
}
</script>
<input type="button" value="nb forms" onclick="nbForms( )"/>

Et cela fonctionne bien.
Comment définis-tu test( ) ?

Julian
Le #79543
Sébastien wrote:
j'ai voulu encapsuler l'alert dans une fonction :

function test()
{ alert(parent.frames[1].document.forms.length);
}

appele via : <input type="button" name="test" value="test"
onClick="test()" />

la console javascript me dit que test() n'est pas une fonction
??



Je viens de reprendre mon test précédent avec le fichier gauche.html
modifié comme suit :

<script type="text/javascript">
function nbForms( ) {
alert(parent.frames[1].document.forms.length) ;
}
</script>
<input type="button" value="nb forms" onclick="nbForms( )"/>

Et cela fonctionne bien.
Comment définis-tu test( ) ?


exactement (mot pour mot) comme toi. sauf que ma fonction s'appelle test
et non nbForms

bizarre...

--
Julian

"When you look long into an abyss,
the abyss also looks into you." --Friedrich Nietzche


Julian
Le #79542
Sébastien wrote:
j'ai voulu encapsuler l'alert dans une fonction :

function test()
{ alert(parent.frames[1].document.forms.length);
}

appele via : <input type="button" name="test" value="test"
onClick="test()" />

la console javascript me dit que test() n'est pas une fonction
??



Je viens de reprendre mon test précédent avec le fichier gauche.html
modifié comme suit :

<script type="text/javascript">
function nbForms( ) {
alert(parent.frames[1].document.forms.length) ;
}
</script>
<input type="button" value="nb forms" onclick="nbForms( )"/>

Et cela fonctionne bien.
Comment définis-tu test( ) ?


humm... mon input (frame gauche) etait dans un form. une fois ces
balises enlevees, l'appel a la fonction marchait.

je ne comprend pas pourquoi. je vais tenter de manipuler les objets a
present.

merci pour ton aide.

--
Julian

"When you look long into an abyss,
the abyss also looks into you." --Friedrich Nietzche


Julian
Le #79302
ASM wrote:

mais si je me plante deja dans l'obtention du nombre de formulaire, je
ne risque pas d'aller bien loin.



tu te planteras moins
si tu attends que la page 2 soit chargée dans la frames[1]

c a d que 'nb' ne doit être déterminé qu'après le chargement
de la page qui contient les forms

(comme dans l'exemple donné par Sebastien)



qques precisions (utiles surement)

en local ca passe.
mais lorsque je definis le contenu de la frame de droite par une url, ma
frame gauche semble ne plus avoir de controle sur le contenu de la frame
de droite.

voila ce que me dit la console javascript :
Error: uncaught exception: Permission denied to get property
HTMLDocument.location

en faisant alert(parent.frames[1].document.location)

--
Julian

"When you look long into an abyss,
the abyss also looks into you." --Friedrich Nietzche


Poster une réponse
Anonyme