IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Remplir un form (ou autre) avec une fonction ? [Débutant(e)]


Sujet :

JavaScript

  1. #1
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut Remplir un form (ou autre) avec une fonction ?
    Bonjour,

    Absolument ignare en Javascript je me trouve confronté à un petit souci : Je cherche à modifier une page html suivant la lecture d'un fichier texte.
    Dans un premier temps j'ai ce code exemple, fonctionnel (plus ou moins sans doute pour vous).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>Test html</title>
    <SCRIPT LANGUAGE="JavaScript">
    function go(loc){
        document.getElementById('cwindow').src = loc;
    }
    </script>
    </head>
    <body bgcolor="#000000" text="#FFFFFF">
    <iframe id="cwindow" src="http://www.developpez.com/" name="cwindow" width="100%" height="730" frameborder="30"></iframe>
    <form method="post">
        <input type="radio" onclick = "go('http://www.mappy.fr')")/><label for="Mappy">Mappy</label>
        <input type="radio" onclick = "go('http://www.developpez.com/')"/><label for="Developpez">Developpez</label>
    </form>
    </body>
    </html>
    A partir de là je souhaite lire un fichier texte de configuration (cela je pense l'avoir suite à mes recherches) pour ajouter les input.
    Disons que je stocke la lecture dans un tableau voici ce que cela donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>test html</title>
    <SCRIPT LANGUAGE="Javascript">
    String tableauCameras[][] = {{"http://www.google.fr", "Google"},{"http://http://www.leboncoin.fr/", "Leboncoin"}};
    function go(loc){
        document.getElementById('cwindow').src = loc;
    }
    function init(){
        go(tableauCameras[0][0]);
        var formobj = document.getElementById('cform');
        for(int i = 0; i < tableauCameras.length; i++)
        {
        formobj.innerHTML="<input type=\"radio\" onclick = \"go(\'"+tableauCameras[i][0]+"\')\")\/><label for=\""+tableauCameras[i][1]+"\">"+tableauCameras[i][1]+"<\/label>");
        }
    }
    </SCRIPT>
    </head>
     
    <body bgcolor="#000000" text="#FFFFFF" onload="init();">
    <iframe id="cwindow" name="cwindow" src="" width="100%" height="730" frameborder="30"></iframe>
    <form id="cform" method="post"></form>
    </body>
    </html>
    Et bien sur cela ne fonctionne pas (idem avec windows en fin de script)
    et je suppose que cela interviens après l'affichage de la page, non ?

    Merci d'avance pour vos lumières
    Merci d'utiliser le forum pour les questions techniques.

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Bonjour,

    Dans ta boucle tu réaffectes le contenu HTML à un seul élément (innerHTML = ) donc ta boucle ne sert à rien. innerHTML += par contre va concaténer à chaque loop ton nouveau HTML.
    One Web to rule them all

  3. #3
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonsoir,

    Merci pour la réponse.
    J'avais en effet noter cela (+=) mais je n'ai toujours d'affiché...
    Merci d'utiliser le forum pour les questions techniques.

  4. #4
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String tableauCameras[][] = {{"http://www.google.fr", "Google"},{"http://http://www.leboncoin.fr/", "Leboncoin"}};
    ça c'est pas du Javascript ! les variables ne sont pas typées et on ne déclare pas un tableau de cette façon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var tableauCameras = [["http://www.google.fr", "Google"],["http://http://www.leboncoin.fr/", "Leboncoin"]];
    là c'est mieux

    biiip ! JS = pas de typage ; il faut mettre var

    Enfin tu dois savoir que google.fr ne permet pas le chargement en iframe, le site est configuré ainsi. Tu peux essayer avec un autre exemple moins regardant.

    Dernière chose, pour éviter de créer un topic à chaque erreur de syntaxe, je t'invite à regarder comment fonctionne la console d'erreurs Javascript (celle de Chrome est excellente) ; cela te permettra de débugger ton code bien plus facilement.
    One Web to rule them all

  5. #5
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonsoir,

    Que de bons conseils... Dire que je les utilisent moi même ()
    Grand merci SylvainPV car je me suis perdu, par manque de bases en javascript, dans ce sujet.

    Voici ce que cela donne suivant vos conseils:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>test html</title>
    </head>
    <body bgcolor="#000000" text="#FFFFFF">
    <iframe id="cwindow" name="cwindow" src="" width="100%" height="730" frameborder="30"></iframe>
    <form id="cform" method="post"></form>
    <script LANGUAGE="JavaScript">
    var tableausites = [["http://www.leboncoin.fr/", "Leboncoin"],["http://www.mappy.fr", "Mappy"]];
    function go(loc){
        document.getElementById('cwindow').src = loc;
    }
    function initpage(){
        document.getElementById('cwindow').src = tableausites[0][0]
        var formobj = document.getElementById('cform');
        for(var i = 0; i < tableausites.length; i++)
        {
            formobj.innerHTML +=  "<input name=Selection type=radio onclick=" + "go('" + tableausites[i][0] + "')><label for=" +tableausites[i][1] + ">" + tableausites[i][1] + "</label>";
     
        }
    }
    initpage();
    </script>
    </body>
    </html>
    Sans doute a revoir : Promis, j’apprends les bases pour la prochaine fois (créer tableausites à partir de la lecture d'un fichier).

    @+
    Merci d'utiliser le forum pour les questions techniques.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Modifier la formule d'une colonne en fonction d'une autre avec une boucle
    Par captaincss dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/07/2014, 18h20
  2. Bouton avec une fonction ayant en argument une autre fonction
    Par Serratonique dans le forum Général Python
    Réponses: 8
    Dernier message: 28/02/2014, 18h53
  3. Récupérer contenu d'un FORM avec une fonction JavaScript
    Par voyageurdumonde dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/10/2012, 19h48
  4. Remplir un champs TEXT caché avec une fonction on change sur une liste déroulante
    Par tang le breton dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/11/2009, 11h04
  5. [VBA-E] avec une fonction value
    Par laas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/11/2002, 13h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo