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 :

retour de resultat de fonction vers opener


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 38
    Points : 33
    Points
    33
    Par défaut retour de resultat de fonction vers opener
    Bonjour,

    je souhaiterais que ma fonction retourne une valeur vers une fenêtre parent (donc depuis un popup) lorsque le gentil utilisateur clique sur le bouton soumettre (il s'agit d'un formulaire).

    Voici ce que j'ai fait:

    la fonction:
    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
    <script type="text/javascript">
            function calculScore()
            {
                    var scoreTotal;
                    //calculer les sous-scores
                            //Physical function
                            var physicalFunctionScore = 10;
                            //pour chaque sous-question (a,b,etc.), regarder quelle case est cochee.
                            //si differents de une seule case cochee, afficher signal d'erreur.
                            if (document.Question3.aa3.checked==true){physicalFunctionScore += 1;}
                            else if (document.Question3.ba3.checked==true){physicalFunctionScore += 2;}
                            else if (document.Question3.ba3.checked==true){physicalFunctionScore += 3;}
                            else {document.write("error, check your answers in question 3.a");
                    //additionner les sous-scores pour produire le score final
                    return physicalFunctionScore;
            }
            //var score=45
            </script>
    Le bouton:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="button" onClick="window.opener.document.getElementById('scoreSF_36').value=calculScore()" value="Soumettre">
    Je ne vois pas pourquoi ceci ne fonctionne pas... toute réponse est la bienvenue!!

    Merci,

    Stef

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    parenthèse du document.write non fermée (et d'ailleurs, hein, tu sais ce qu'on en pense des document.write...)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    Bien vu, il manque l'accolade en fait Je ne sais pas si ça règle mes problèmes par contre, je n'ai pas ma machine avec moi...

    Non, que pense-t-on des document.write?

  4. #4
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 651
    Points : 11 145
    Points
    11 145
    Par défaut
    bonjour,

    document.write() remplace tout le code de la page par son argument lors de son appel.

    Non, que pense-t-on des document.write?
    fais une recherche sur le forum avec ce mot clef

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Auteur
    document.write() remplace tout le code de la page par son argument lors de son appel.
    Plus précisément, le comportement de document.write() dépend de l'état du document.
    Si celui-ci est ouvert (en gros, la page est en cours de création), alors document.write() insère le contenu de ses arguments à l'endroit où il est appelé.
    Si le document est fermé (la page a fini de se charger), alors document.write() réouvre le document, insère le contenu de ses arguments puis referme le document, ce qui a pour effet concret de remplacer ce que contenait le document par le nouveau contenu comme l'indique Auteur.

    Enfin, le principal autre reproche que l'on peut faire à document.write() est d'aller à l'encontre du principe de séparation des couches : (X)HTML pour le contenu, CSS pour la présentation et JavaScript pour le comportement.

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    moi aussi je me mets dans le "on" qui dit que document.write c'est tout null

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    OK merci pour les explications

    Bon, d'abord désolé pour le manque d'accent: j'ai un clavier US, et ce matin après un update de Windows et pour un raison obscure, je ne peux pas switcher.

    Ensuite, j'ai réalisé ce matin que je n'avais pas besoin de mon projet pour tester le couple popup-parent, voici ce que j'ai fait:

    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
    27
    28
    29
    <script type="text/javascript">
    	function calculScore()
    	{
    		var scoreTotal;
    		//calculer les sous-scores
    		//Physical function
    		var physicalFunctionScore = 10;
    		//pour chaque sous-question (a,b,etc.), regarder quelle case est cochée.
    		//si différents d'ne seule case cochée, afficher signal d'erreur.
    		if (document.Question3.aa3.checked==true){physicalFunctionScore += 1;}
    		else if (document.Question3.ba3.checked==true){physicalFunctionScore += 2;}
    		else if (document.Question3.ca3.checked==true){physicalFunctionScore += 3;}
    		//additionner les sous-scores pour produire le score final
    		return physicalFunctionScore;
    	}
    	//var score=45
    	</script>
    	<center>
    	<input type="button" onClick="window.opener.document.getElementById('scoreSF_36').value=calculScore()" value="Soumettre">
    	<input type="button" onClick="window.opener.document.getElementById('scoreSF_36').value=null" value="Réinitialiser">
    	</center>
     
    	<a href="#" onclick="window.close();">Fermer</a>
    	<input type="text" id="scoreSF_36" />
     
    	<INPUT type="button" value="New Window!" onClick="window.open('SF36GOOD.html','mywindow','width=400,height=200')"> 
     
    </body>
    </html>
    Ça fonctionne, il semble donc que le problème était effectivement l'accolade... remarquez: document.write a disparu

    Tiens j'y pense en postant mon code: quelqu'un saurait comment, avec Blogger, poster du code et faire en sorte que l'indentation soit respectée? Désolé ça n'a un peu rien avoir...

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    Bonjour,

    je me demandais ce qui serait à utiliser à la place du document.write, si je veux signifier à l'utilisateur qu'il a fait une erreur à telle ou telle ligne?

    Voici ma fonction Javascript pour le moment:

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    <script type="text/javascript">
    	function calculScore()
    	{
    		var scoreTotal;
    		//calculer les sous-scores
    		//Physical function
    		var physicalFunctionScore = 0;
    		//pour chaque sous-question (a,b,etc.), regarder quelle case est cochee.
    		//si differents de une seule case cochee, afficher signal d'erreur.
    		if (document.Question3.aa3.checked==true){physicalFunctionScore += 1;}
    		else if (document.Question3.ba3.checked==true){physicalFunctionScore += 2;}
    		else if (document.Question3.ca3.checked==true){physicalFunctionScore += 3;}
     
    		if (document.Question3.ab3.checked==true){physicalFunctionScore += 1;}
    		else if (document.Question3.bb3.checked==true){physicalFunctionScore += 2;}
    		else if (document.Question3.cb3.checked==true){physicalFunctionScore += 3;}
     
    		if (document.Question3.ac3.checked==true){physicalFunctionScore += 1;}
    		else if (document.Question3.bc3.checked==true){physicalFunctionScore += 2;}
    		else if (document.Question3.cc3.checked==true){physicalFunctionScore += 3;}
     
    		if (document.Question3.ad3.checked==true){physicalFunctionScore += 1;}
    		else if (document.Question3.bd3.checked==true){physicalFunctionScore += 2;}
    		else if (document.Question3.cd3.checked==true){physicalFunctionScore += 3;}
     
    		if (document.Question3.ae3.checked==true){physicalFunctionScore += 1;}
    		else if (document.Question3.be3.checked==true){physicalFunctionScore += 2;}
    		else if (document.Question3.ce3.checked==true){physicalFunctionScore += 3;}
     
    		if (document.Question3.af3.checked==true){physicalFunctionScore += 1;}
    		else if (document.Question3.bf3.checked==true){physicalFunctionScore += 2;}
    		else if (document.Question3.cf3.checked==true){physicalFunctionScore += 3;}
     
    		if (document.Question3.ag3.checked==true){physicalFunctionScore += 1;}
    		else if (document.Question3.bg3.checked==true){physicalFunctionScore += 2;}
    		else if (document.Question3.cg3.checked==true){physicalFunctionScore += 3;}
     
    		if (document.Question3.ah3.checked==true){physicalFunctionScore += 1;}
    		else if (document.Question3.bh3.checked==true){physicalFunctionScore += 2;}
    		else if (document.Question3.ch3.checked==true){physicalFunctionScore += 3;}
     
    		if (document.Question3.ai3.checked==true){physicalFunctionScore += 1;}
    		else if (document.Question3.bi3.checked==true){physicalFunctionScore += 2;}
    		else if (document.Question3.ci3.checked==true){physicalFunctionScore += 3;}
     
    		if (document.Question3.aj3.checked==true){physicalFunctionScore += 1;}
    		else if (document.Question3.bj3.checked==true){physicalFunctionScore += 2;}
    		else if (document.Question3.cj3.checked==true){physicalFunctionScore += 3;}
    		//additionner les sous-scores pour produire le score final
    		return physicalFunctionScore;
    	}
    L'utilisateur ne doit avoir la possibilité de cocher qu'une seule case par question, je ne sais pas encore vraiment comment implementer ceci.

    La chose qui me dérange le plus dans ce code est sa longueur, est-ce que d'après vous il y aurait moyen de factoriser un peu?

    Merci

    EDIT: J'ai pensé à utiliser alert(), mais pour peu que l'utilisateur soit... hum... un peu bourré, et suivant le nombre d'erreurs c'est autant d'alert qui vont s'ouvrir... c'est pas super propre...

Discussions similaires

  1. Problème de titre avec la fonction window.open
    Par kloss dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/04/2005, 18h34
  2. Retour NULL d'une fonction utilisateur
    Par tiboleo dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/11/2004, 15h40
  3. [LG]Parametres ou resultat de fonction : tableau
    Par patdez dans le forum Langage
    Réponses: 2
    Dernier message: 12/05/2004, 12h19
  4. plusieurs resultats de fonctions
    Par sos dans le forum C
    Réponses: 4
    Dernier message: 29/02/2004, 17h18
  5. [LG]Resultat de fonction de type Record ?
    Par Mike888 dans le forum Langage
    Réponses: 10
    Dernier message: 24/01/2004, 22h48

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