2 votes

Erreur de syntaxe involontaire : Unxpected token (

J'essaie d'utiliser le code suivant dans une page test.html :

<script language = "javascript">
function test()
{
    if (typeof a != "undefined")
    {
        document.body.innerHTML = "";
        document.write(a);
    }
    else
    {
        document.body.innerHTML = "";
        document.write("a is undefined");
    }
    var a = "a is defined";
    document.write("<br><br>");
    document.write("<a href='javascript:void(0)' onclick='function(){ test(a); }'>test</a>");
}
window.onload = function(){ test(); }
</script>

Le résultat est l'erreur "Uncaught SyntaxError : Unexpected token (". Comment faire pour que le lien efface la page et affiche la variable correspondante ?

4voto

ThiefMaster Points 135805

En function(){ test(a); } dans votre onclick est la cause de l'erreur.

Vous devez utiliser (function(){ test(a); }) pour obtenir une fonction expression au lieu d'une fonction déclaration .

Toutefois, étant donné que a n'est pas global et JavaScript à l'intérieur d'un HTML on* ne crée pas de fermeture, le code ne fonctionne toujours pas.


Voici un exemple approprié/travail en utilisant jQuery :

function test(a) {
    if(a !== undefined) {
        $('body').html(a);
    }
    else {
        $('body').html('a is undefined');
    }
    var a = 'a is defined';
    $('body').append('<br /><br />');
    $('<a href="#">test</a>').click(function(e) {
        e.preventDefault();
        test(a);
    }).appendTo('body');
}

$(document).ready(function() {
    test();
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X