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 :

SyntaxError: unterminated string literal


Sujet :

JavaScript

  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    510
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 510
    Par d�faut SyntaxError: unterminated string literal
    Bonjour,

    J'ai un probl�me avec une chaine non termin�, mais impossible de voir ou, pourtant j'ai d�j� eu le probl�me mais bon

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    html += '<td class="reserver_td" onclick="location.href=\'utilisateur/reserver/?formation_id=\'+lieu_selected.formations[i].id+\';return false;">Réserver</td>';
    Je pr�cise que "lieu_selected.formations[i].id" est une donn� JS

    Merci les amis

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    61
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 61
    Par d�faut
    Salut,

    essais �a :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    html += '<td class="reserver_td" onclick="location.href=\'utilisateur/reserver/?formation_id=\''+lieu_selected.formations[i].id+'\';return false;">Réserver</td>';
    il te manque 2 ' autour de ta variable.

  3. #3
    Membre �clair�
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    510
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 510
    Par d�faut
    Merci l'ami de me venir en aide, top cool les forums

    J'ai l'erreur suivante maintenant

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    SyntaxError: missing ; before statement (avant le 3)
     
     
    location.href='utilisateur/reserver/?formation_id='3';return false;

  4. #4
    Membre �clair�
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    510
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 510
    Par d�faut
    Merci mais c'est ok


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    onclick="location.href=\'utilisateur/reserver/?formation_id='+lieu_selected.formations[i].id+'\';return false;">Réserver</td></tr>';

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    61
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 61
    Par d�faut
    Ha oui en effet c'est normal.

    Et comme �a : (2 solutions � tester)

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    html += "<td class=\"reserver_td\" onclick=\"location.href='utilisateur/reserver/?formation_id='"+lieu_selected.formations[i].id+"';return false;\">Réserver</td>";
    html += '<td class="reserver_td" onclick="location.href=\'utilisateur/reserver/?formation_id="'+lieu_selected.formations[i].id+'";return false;">Réserver</td>';

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    61
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 61
    Par d�faut
    Ta ligne comporte des \' alors qu'elle est englob� par des ", plus besoin de \ devant tes ' du coup.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    61
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 61
    Par d�faut
    En fait c'est plut�t �a qu'il te faut, d�sol� pour les 2 solutions �rron�es

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    html += "<td class=\"reserver_td\" onclick=\"location.href='utilisateur/reserver/?formation_id="+lieu_selected.formations[i].id+"';return false;\">Réserver</td>";
    Sacr� apostrophes et guillemets !!

  8. #8
    Membre �clair�
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    510
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 510
    Par d�faut
    Tu dis

    "Ta ligne comporte des \' alors qu'elle est englob� par des ", plus besoin de \ devant tes ' du coup. "

    Il m'en faut pour le lien tout de m�me, m�me si c englober par de " comme tu dis

    Ma solution
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    onclick="location.href=\'utilisateur/reserver/?formation_id='+lieu_selected.formations[i].id+'\';return false;">Réserver</td></tr>';
    Ta solution

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    html += "<td class=\"reserver_td\" onclick=\"location.href='utilisateur/reserver/?formation_id="+lieu_selected.formations[i].id+"';return false;\">Réserver</td>";
    Cela revien pratiquement au m�me car tu doit echapper pas mal contrairement a moi


    Merci l'ami en tout cas

    A plutard

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    61
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 61
    Par d�faut
    Ha oui j'avais pas vu que t'avais coller que ton onclick au lieu du html +='' complet.

    Autant pour moi, ne tiens pas compte de cette remarque

  10. #10
    Expert confirm�
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par d�faut
    Le fond du probl�me ici, c'est qu'on a plusieurs niveaux d'interpr�tation : du JS dans un attribut HTML onclick, lui m�me g�n�r� par JS. S'embrouiller avec les guillemets est souvent le signe qu'on fait les choses de mani�re sous-optimale.

    Ici, on a donc dans un premier temps une cha�ne html construite par JS ; le moteur JS va devoir faire appel � l'interpr�teur (le parseur) HTML pour cr�er l'arbre DOM correspondant. Dans un second temps, l'interpr�teur HTML d�couvre un attribut �v�nementiel (onclick), et le passe � l'interpr�teur JS. Tout �a fait beaucoup de parsing.

    On peut supprimer un niveau d'interpr�tation en rempla�ant l'attribut onclick par un gestionnaire d'�v�nement. Mais cela oblige � un changement de logique : il faut d'abord finaliser l'interpr�tation du HTML, puis avoir un moyen de s�lectionner l'�l�ment sur lequel on veut ajouter le gestionnaire.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    html += '<td class="reserver_td">Réserver</td>';
    …
    machin.insertAdjacentHTML("beforeend", html);
    Array.forEach(machin.querySelectorAll("td.reserver_td"),
      function ($td, i) {
        $td.addEventListener("click", function (event) {
          event.preventDefault();
          location.href = "utilisateur/reserver/?formation_id=" + lieu_selected.formations[i].id;
        });
      });
    On peut encore supprimer un niveau d'interpr�tation en faisant g�n�rer le HTML par JS directement (au lieu de faire appel au parseur HTML comme c'est le cas quand on emploie innerHTML ou insertAdjacentHTML) avec les m�thodes du DOM. �a tombe bien, le DOM proposes des m�thodes sp�cifiques pour construire les tableaux :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var $table = document.createElement("table");
    …
    var $tr = $table.insertRow();
    for (var i = 0; i < truc; i++) {
      var $td = $row.insertCell();
      $td.className = "reserver_td";
      $td.formationId = lieu_selected.formations[i].id;
      $td.addEventListener("click", function (event) {
        event.preventDefault();
        location.href = "utilisateur/reserver/?formation_id=" + this.formationId;
      });
    }
    J'utilise une propri�t� expando (formationId) pour �viter le pi�ge de la variable de boucle qui n'est pas �valu�e imm�diatement.


    Je vous l'accorde, �a fait du code plus compliqu�, mais c'est plus efficace car tout est fait en une seule passe, lors de l'interpr�tation du code JavaScript principal. Au lieu de g�n�rer du code source HTML et du code source JS qui n�cessitent un nouvel appel aux interpr�teurs respectifs, on g�n�re des objets DOM directement exploitables par le navigateur. Et comme vous pouvez le voir dans mon second exemple, il n'y a plus de guillemets imbriqu�s
    La FAQ JavaScript � Les cours JavaScript
    Touche F12 = la console → l�outil indispensable pour d�velopper en JavaScript !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. SyntaxError: unterminated string literal
    Par ypcman dans le forum G�n�ral JavaScript
    R�ponses: 3
    Dernier message: 12/12/2015, 17h40
  2. (PHP) Erreur JS : unterminated string literal
    Par FotoXe33 dans le forum G�n�ral JavaScript
    R�ponses: 8
    Dernier message: 24/03/2010, 15h16
  3. [DOM] "unterminated string literal"
    Par Crawdge dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 30/05/2008, 09h40
  4. "unterminated string literal" oui mais je ne vois rien
    Par lodan dans le forum G�n�ral JavaScript
    R�ponses: 12
    Dernier message: 17/02/2008, 17h52
  5. Unterminated string literal
    Par zalalus dans le forum G�n�ral JavaScript
    R�ponses: 3
    Dernier message: 25/12/2006, 15h32

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