web-dev-qa-db-fra.com

Erreur JavaScript (Uncaught SyntaxError: Fin d'entrée inattendue)

J'ai du code JavaScript qui fonctionne dans FireFox mais pas dans Chrome ou IE. 

Dans la console Chrome JS, le message d'erreur suivant s'affiche: 

"Uncaught SyntaxError: Fin d’entrée inattendue".

Le code JavaScript que j'utilise est:

<script>
 $(function() {
 $("#mewlyDiagnosed").hover(function() {
    $("#mewlyDiagnosed").animate({'height': '237px', 'top': "-75px"});
 }, function() {
    $("#mewlyDiagnosed").animate({'height': '162px', 'top': "0px"});
 });
</script>

Il dit que l'erreur est sur la dernière ligne qui est });

178
user482375

Ajoutez un deuxième });.

Lorsqu'il est correctement mis en retrait, votre code se lit

$(function() {
    $("#mewlyDiagnosed").hover(function() {
        $("#mewlyDiagnosed").animate({'height': '237px', 'top': "-75px"});
    }, function() {
        $("#mewlyDiagnosed").animate({'height': '162px', 'top': "0px"});
    });
MISSING!

Vous n'avez jamais fermé la $(function() { extérieure.

360
SLaks

Dans mon cas, j'essayais d'analyser un JSON vide:

JSON.parse(stringifiedJSON);

En d'autres termes, ce qui s'est passé est le suivant:

JSON.parse("");
85
falsarella

http://jsbeautifier.org/ est utile pour mettre en retrait votre code JS minifié.

De plus, avec Google Chrome, vous pouvez utiliser "joli imprimé". Voir la capture d'écran ci-dessous illustrant jquery.min.js de Stack Overflow bien en retrait depuis mon navigateur :)

enter image description here

36
Hugo

En formatant un peu votre code, vous n’avez fermé que la fonction de survol interne. Vous n’avez pas fermé les parties extérieures, indiquées ci-dessous ....

$(// missing closing)
 function() { // missing closing }
     $("#mewlyDiagnosed").hover(
        function() {
            $("#mewlyDiagnosed").animate({'height': '237px', 'top': "-75px"});
        }, 
        function() {
            $("#mewlyDiagnosed").animate({'height': '162px', 'top': "0px"});
        });
14
hvgotcodes

Dans mon cas, il s’agissait d’un problème simple guillemets doubles dans mon bookmarklet, n’utilisez que des guillemets simples sur des bookmarklets. Juste au cas où cela aiderait quelqu'un. 

5
Yëco

Cette erreur est principalement due aux appels ajax renvoyés vides lors de la tentative d'analyse d'une variable Json vide. 

Pour résoudre ce test si les données renvoyées sont vides 

           $.ajax({
                    url: url,
                    type: "get",
                    dataType: "json",
                    success: function (response) {

                      if(response.data.length == 0){ 
                          // EMPTY
                         }else{
                          var obj =jQuery.parseJSON(response.data);
                            console.log(obj);
                         }
                     }
           });
3
Jimmy Obonyo Abor

J'ai eu cette erreur quand j'essayais d'écrire un bookmarklet javascript. Je ne pouvais pas comprendre ce qui le causait. Mais finalement, j'ai essayé d'encoder le bookmarklet via l'URL, via le site Web suivant: http://mrcoles.com/bookmarklet/ puis l'erreur a disparu, un problème avec certains caractères du code JavaScript interprétés comme des caractères de contrôle d'URL spéciaux.

3
user280109

Je l’ai eu depuis que j’avais un commentaire dans un fichier que j’ajoutais à mon JS, une raison vraiment délicate de ce qui se passait - bien que lorsque vous cliquez sur le fichier VM Découvrez exactement quelle était l'erreur. Dans mon cas, il s'agissait simplement de supprimer le code que j'utilisais.

0
Jack Hales

Dans mon cas, cela est dû à un (0) manquant dans javascript:void(0) dans une ancre.

0
Sam

J'ai également eu cette erreur pointant vers la fin du dernier bloc de script sur une page, pour réaliser que l'erreur était en fait de cliquer sur un élément avec un onclick="pagename" au lieu de onclick="window.location='pagename'". Ce n'est pas toujours un support manquant!

0
justanotherguy