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 :

Petite fonction toute simple, mais


Sujet :

JavaScript

  1. #1
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut Petite fonction toute simple, mais
    Bonjour à tous,

    Je débute en JS.
    Je voudrais afficher un mot qui serait modifié selon des attributs choisis dans un formulaire. Alors j'ai fait une petite fonction...qui ne fonctionne pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    function affiche_mot(){
     
    if (document.form1.gras.checked==true)
    { 
    document.write("<B>" + document.form1.mot.value + "</B>");
    }
    puis dans le form1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <input type="hidden" name="mot" value="Le Mot">
     <input name="gras" type="checkbox"  onClick="affiche_mot();">
    et j'affiche la fonction à l'endroit où je voudrais voir Le Mot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <script language="JavaScript" type="text/JavaScript">
    affiche_mot()</script>
    Si je coche la case, cela m'affiche bien le mot en gras, mais plus rien d'autre dans la fenêtre ! une page blanche et le mot tout seul

  2. #2
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    normal document.write efface le reste du doc ...

    mets un div et attribue lui le innerHTML
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Merci pour ta réponse, mais en cherchant, j'ai lu que innerHTML ne fonctionnait que sous IE. Qu'en penses tu ?

  4. #4
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    que je sais pas ou t'as lu ça mais ne retourne jamais sur ce site ... c'est un ramassis de conneries ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    oups ! alors je ne dirai pas lequel

    Bon voici ce que j'ai fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    function affiche_mot(){
    if (document.form1.gras.checked==true)
    { 
    document.all.affiche.innerText = "<b>" + document.form1.mot.value + "</b>"; 
    }
    }
    Donc le mot s'affiche bien dans mon div "affiche", mais il ne se met pas en gras, il affiche les balises !
    Par ailleurs, si je peux me permettre, ma question n'était pas complète. J'ai prix l'exemple de l'attribut gras, mais en réalité j'ai 5 checkbox et 5 attributs (italique, souligné, couleur...)...
    Comment tu articulerais la fonction pour que les effets s'appliquent sur le mot en se cumulant, ou s'annulent si le checkbox est décoché ?
    Je me vois pas trop mettre autant de else if que de combinaisons...

  6. #6
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    Ben je sais pas ce que vous en pensez mais pour moi innerHTML fonctionne sur tous les navigateurs (à part peut-être internet explorer version 0.2beta )

    Donc voici mon conseil :

    document.all.affiche.innerHTML = "<b>" + document.form1.mot.value + "</b>";

  7. #7
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    Au fait pour le cumul des attributs, mets ta chaine dans une variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var str = document.form1.mot.value ;
     
    if (document.form1.gras.checked==true)
    str = "<b>" + str + "</b>"; 
    if (document.form1.italique.checked==true)
    str = "<i>" + str + "</i> ";
    if (document.form1.machin.checked==true)
    str = "<Machin>" + str + "</Machin> ";
     
     
    document.all.affiche.innerHTML = str;

  8. #8
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Oups !!! nos posts se sont croisés ! je regarde ta soluce

    Euh, oui Linar009, mais j'ai lu ça tout à l'heure sur un forum très connu et très sérieux...si si...
    Ensuite, merci, c'est bien innerHTML...
    Par contre, tu vois comment je pourrais cumuler facilement les attributs, ou il faut faire un else if par combinaison possible ?

  9. #9
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    switch is a magic word
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #10
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    Citation Envoyé par SpaceFrog
    switch is a magic word
    Avec plusieurs variables, ça risque d'être compliqué je pense ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    str = (document.form1.gras.checked ? <B> + str + </B> :
         document.form1.italique.checked ? <I> + str + </I> :
         document.form1.italique.checked ? <M> + str + </M> :
    str);
    Mais je ne suis pas sûr que cela cumule (essaie...)

  11. #11
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    Citation Envoyé par renaud26
    Euh, oui Linar009, mais j'ai lu ça tout à l'heure sur un forum très connu et très sérieux...si si...
    Ben écoute moi innerHTML, ça fonctionne sur IE, FF, Netscape ...

  12. #12
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    avec plusieurs variables aucun problème suffit de fair eun switch (true) ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  13. #13
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    Citation Envoyé par SpaceFrog
    avec plusieurs variables aucun problème suffit de fair eun switch (true) ...
    Je ne suis pas sûr que cela ait un avantage significatif par rapport à if, else if , else ...
    Enfin , je me trompe peut-être ...

  14. #14
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    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
    var att=new Array()
    if (document.getElementById("bold").checked) {
      att[att.lenght]="b"
    }
    if (document.getElementById("italic").checked) {
      att[att.lenght]="i"
    }
    if (document.getElementById("underline").checked) {
      att[att.lenght]="u"
    }
    if (document.getElementById("greater").checked) {
      att[att.lenght]="big"
    }
    if (document.getElementById("smaller").checked) {
      att[att.lenght]="small"
    }
    var str = ""
    for (var i=0; i<att.length; i++) {
       str += "<" + att[i] + ">"
    }
    str += InnerHTML
    for (var i=att.length; i>-1; i--) {
       str += "</" + att[i].split(" ")[0] + ">"
    }

  15. #15
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Merci, Fremy...je ne voudrais pas copier-coller ton code comme un benêt, et j'essaye de comprendre...pourquoi j'ai une erreur "innerHTML est indéfini"...

  16. #16
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    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
    var att=new Array()
    switch (true){
    case document.getElementById("bold").checked :  att.push("b");
    case document.getElementById("italic").checked:   att.push("i");
    case document.getElementById("underline").checked: att.push("u")
    case document.getElementById("greater").checked:  att.push("big")
    case document.getElementById("smaller").checked: att.push("small")
    }
    var str = ""
    for (var i=0; i<att.length; i++) {
       str += "<" + att[i] + ">"
    }
    str += letexte
    for (var i=att.length; i>-1; i--) {
       str += "</" + att[i] + ">"
    }
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  17. #17
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Update et commentaires du code du post au dessus, dsl de "voler" ton code L'idée du switch est tout bonnement... bonne ! Mais attention de ne pas oublier le break !
    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
    var att=new Array() // Ensemble des balises à utiliser
    // Ajoute une balise et ses attributs au tableau
    switch (true){
    case document.getElementById("bold").checked :  att.push("b"); break;
    case document.getElementById("italic").checked:   att.push("i"); break;
    case document.getElementById("underline").checked: att.push("u"); break;
    case document.getElementById("greater").checked:  att.push("big"); break;
    case document.getElementById("smaller").checked: att.push("small"); break;
    case document.getElementById("fixefont").checked: att.push("font face='Courier New'"); break;
    }
    // Construit le HTML à utiliser
    var str = ""
    // Balises ouvrantes
    for (var i=0; i<att.length; i++) {
       str += "<" + att[i] + ">"
    }
    // Texte central
       // Conversion du texte au format HTML
       var Div = document.createElement("DIV");
       Div.appendChild(document.createTextNode(METS_ICI_UNE_REFERENCE_AU_TEXTE));
    str += Div.innerHTML;
    // Balises fermantes
    for (var i=att.length; i>-1; i--) {
       str += "</" + att[i].split(" ")[0] + ">"
    }
    // str vaut maintenant le HTML final

  18. #18
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    non justement fremy pas de break sinon il ne passe pas en revue toutes les options ...

    si tu fais un break il sort du switch, si tu ne mets pas de break il continue ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  19. #19
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Hein ?
    J'en suis pas sur mais soit...
    Avec ta méthode, il ne risque pas d'ajouter tous les attributs dans le cas ou le premier est true ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <html>
    <body>
    <script type="text/javascript">
    var i=0
    switch (true) {
       case true: document.write("true<br />");
       case false: document.write("false<br />");
    }
    </script>
    </body>
    </html>

  20. #20
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Tu as raison Fremmy, les attributs sont comme "cumulés" d'entrée. C'est à dire que si je check "gras", j'affiche gras, italique et souligné...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [MySQL] Problème tout simple mais résultat incompréhensible
    Par KaXz dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 25/02/2007, 00h48
  2. Problème avec une petite fonction toute bête
    Par jeremy13 dans le forum MATLAB
    Réponses: 3
    Dernier message: 18/01/2007, 09h10
  3. un petit code tout simple o_O avec des $POST variable :)
    Par dark_vidor dans le forum Langage
    Réponses: 5
    Dernier message: 08/04/2006, 01h08
  4. Petit truc tout simple que je comprend pas
    Par Olaf MENJI dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 29/11/2005, 16h56
  5. creation d'une procedure ou fonction toute simple?
    Par atlas2003 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 16/11/2005, 14h56

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