Partage
  • Partager sur Facebook
  • Partager sur Twitter

Uncaught TypeError: Cannot set property 'onclick'

Sujet résolu
    10 août 2019 à 23:54:12

    Bonjour / Bonsoir à toutes et à tous,

    Voulant améliorer mon portfolio, j'ai commencé à travailler sur un système permettant de modifier la langue de mon site lorsque l'utilisateur clique sur des ancres.

    J'ai donc cherché un tutoriel sur internet et suis tombé sur celui-ci qui me paraissait très bien:

    https://www.youtube.com/watch?v=PaJrDAmrOB4

    Malheureusement, le code ne fonctionne pas. La console me retourne comme erreur:

    Uncaught TypeError: Cannot set property 'onclick' of undefined


    Je ne comprends pas pourquoi cette variable pose problèmes. Je l'ai pourtant bien déclaré au tout début de mon script :(

    Mon code se trouve ci-dessous:

    <DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>test</title>
    </head>
    <body>
    	<a href="#eng" data-reload>English</a>
    	<a href="#fr" data-reload>Français</a>
    
    	<p id="hi">
    	Salut tout le monde!
    	</p>
    
    	<script type="text/javascript">
    
    		//Define language reload anchors
    		var dataReload = document.querySelectorAll("[data-reload]");
    		console.log(dataReload);
    
    		//Language translations
    		var language = 
    		{
    			eng: 
    			{
    				welcome : "Welcome everyone"
    			},
    
    			fr:
    			{
    				welcome: "Salut tout le monde"
    			},
    
    		};
    
    		//Define language via window hash
    		if (window.location.hash)
    		{
    			if (window.location.hash == "#eng")
    			{
    				hi.textContent = language.eng.welcome;
    			}
    		}
    
    		//Define language reload onclick illiteration
    		for (i = 0; i <= dataReload.length; i++) 
    		{
    			dataReload[i].onclick = function() 
    			{
    				console.log ("il faut rafraichir la");
    				location.reload(true);
    			};
    		}
    
    	</script>
    </body>
    </html>



     Merci d'avance pour votre aide,

    Bonne journée / Bonne soirée,

    Bourdeau Paul,

    -
    Edité par PaulBourdeau1 11 août 2019 à 0:10:26

    • Partager sur Facebook
    • Partager sur Twitter
      11 août 2019 à 8:20:57

      si tu commences à 0 le tableau, la fin s arrete à length-1, donc < length dans la boucle. Par exemple, un tableau contient 3 items , aux index 0 - 1 - 2 , le dernier c est l index 2, donc l index length-1 , 3-1.

      Pour debugger ca, normalement tu mets un console.log pour connaitre les valeurs qui passent bien, et tu comprends ou se trouve l erreur.

      • Partager sur Facebook
      • Partager sur Twitter
        11 août 2019 à 22:12:05

        Bonsoir PaulLou, 

        Merci pour ta réponse. Grâce à celle-ci, j'ai réussi à résoudre mon problème.

        Bonne fin de soirée,

        Paul Bourdeau

        • Partager sur Facebook
        • Partager sur Twitter

        Uncaught TypeError: Cannot set property 'onclick'

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown