Je souhaite définir le texte d'un élément p
à l'aide de Javascript. Que puis-je faire pour corriger mon erreur et définir correctement le texte? Pourquoi ai-je cette erreur?Impossible de définir la propriété innerHTML avec Javascript
Lorsque j'exécute generate()
en cliquant sur le bouton html à partir de cette ligne de code dans mon fichier html,
<input type="submit" value="Generate!" onclick="generate()">
que je reçois l'erreur suivante dans la console:
Uncaught TypeError: Cannot set property 'innerHTML' of null
Ci-dessous mon Fonction generate() dans mon fichier javascript randomizer.js référencé.
function generate() {
var team = document.getElementById('template').cloneNode(true)
console.log('queryselector', team.querySelectorAll('p')[0].innerHTML)
team.querySelectorAll('p')[0].innerHTML = "ah hah!";
}
Voici quelques autres considérations et notes:
- Mon fichier Javascript est référencé à la fin de mon document html comme ceci:
...
<script type="text/javascript" src='randomizer.js'></script>
</body>
</html>
- La sortie de
queryselector
de mon instructionconsole.log
est défini et affiche correctement le texte actuel à l'intérieur de l'élémentp
. Donc, il est étrange que lorsque j'essaie de le définir, cela suggère queteam
est nul.
cela ne signifie pas que team est nul, cela suggère 'team.querySelectorAll ('p') [0]' est null - mais le code semble fonctionner - quel navigateur utilisez-vous? –
Vous savez que vous travaillez avec un clone, et non les éléments du DOM? – adeneo
@Jaromanda X, j'utilise Chrome. adeneo, oui je suis conscient que je l'ai cloné mais ne devriez-vous pas encore être capable de manipuler ce noeud même s'il n'est pas encore connecté au DOM HTML? Pourquoi est-ce que je suis capable de lire la propriété alors dans console.log? – writofmandamus