11498 sujets

JavaScript, DOM et API Web HTML5

Bonjour. Je commence le HTML5 et Javascript, en recopiant le code trouvé dans le "Guide Complet" du HTML5, et j'imagine qu'il y une erreur dans le livre(??).

La console de Chrome me donne ce message : "Uncaught TypeError: Cannot read property 'addEventListener' of null". --> Ceci pour la ligne 2.

Or mon addEventListener s'ajoute bien à un objet HTML auquel j'ai attribué un id -->
<ul id="players"></ul>


Voici le HTML

<body>
		<h2>Joueurs disponibles</h2>
		<ul id="playersList" ondragstart="startDrag(event)">
			<li id="a" draggable="true">joueur A</li>
			<li id="b" draggable="true">joueur B</li>
			<li id="c" draggable="true">joueur C</li>
			<li id="d" draggable="true">joueur D</li>
			<li id="e" draggable="true">joueur E</li>
			<li id="f" draggable="true">joueur F</li>
		</ul>
		<h2>Joueurs retenus</h2>
		<ul id="players"></ul>
	</body>


et le JS

var dropTarget = document.getElementById("players");
dropTarget.addEventListener("drop", drop);
dropTarget.addEventListener("dragenter", setDrop);
dropTarget.addEventListener("dragover", setDrop);

function startDrag(event){
	// stockage des données dans l'objet transfer
	event.dataTransfer.effectAllowed="move";
	event.dataTransfer.setData(
		"Text",
		event.target.getAttribute("id"));
}

function drop(event){
	var element = event.dataTransfer.getData("Text");
	event.target.appendChild(document.getElementById(element));
}

function setDrop(event){
	event.preventDefault();
}
salut,
tu as dû placer ton script dans le <head>. Donc soit tu mets ton JS en fin de code, soit tu ajoutes un onload pour exécuter ton script (la première solution étant meilleure).