2 votes

Erreur de Type Non Rattrapée : Cannot set property 'onclick' of null onclick not working

Voir ci-dessous est mon javascript,

<script type="text/javascript">
document.getElementById('auth').onclick=change;
function change(){
    this.className="account_holder";
}
</script>

html est

<td id="auth" class="authorised_reportericon" >
                        <a href="{% url incident.views.authorised_reporter %}">
                        <p align="center" style="color:black;font-size:16px;">Authorised Reporters</p></a>
                    </td>

J'ai assigné l'id de td pour le onclick, mais cela donne une erreur comme Uncaught TypeError : Impossible de définir la propriété 'onclick' de null.

10voto

Ian Points 23712

Mettez document.getElementById('auth').onclick=change; à l'intérieur de window.onload comme :

window.onload = function () {
    document.getElementById('auth').onclick=change;
};

D'après l'erreur que vous obtenez, je suppose que votre Javascript est exécuté avant que le HTML correspondant ne soit rendu, ce qui signifie que l'élément avec l'icône id "auth" n'est pas trouvé. En le plaçant dans un événement où tout le DOM est prêt, le problème devrait être résolu.

Démonstration : Ici

3voto

yowza Points 249

Il est fort probable que vous ayez placé le script dans le répertoire de l'utilisateur. head du document, ce qui signifie qu'il est exécuté avant que le reste de la page ait été rendu.

Au lieu de cela, déplacez-le à l'intérieur du body jusqu'à la fin, juste avant la fermeture. </body> étiquette.

<!doctype html>
<html>
    <head>
        <title>my page</title>
    </head>
    <body>

        <!-- your page content -->

        <!-- your script -->
        <script type="text/javascript">
        document.getElementById('auth').onclick=change;
        function change(){
            this.className="account_holder";
        }
        </script>
    </body>
</html>

Maintenant les éléments seront disponibles avant l'exécution du script. En effet, la page se rend dans l'ordre de haut en bas, et les script bloquent le rendu lors du chargement.

Ainsi, lorsque le script se trouve dans l'en-tête, il empêche le reste de la page en dessous de s'afficher jusqu'à ce que le script soit terminé, ce qui signifie que l'élément "auth" n'existe pas encore.

L'utilisation de cette technique de positionnement du script vers la fin lui permet de s'exécuter potentiellement beaucoup plus tôt que d'attendre un window.onload événement.

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