Skip to content

Instantly share code, notes, and snippets.

@pimeo
Last active January 4, 2018 00:31
Show Gist options
  • Save pimeo/085498897fba959454f69e22e18c6380 to your computer and use it in GitHub Desktop.
Save pimeo/085498897fba959454f69e22e18c6380 to your computer and use it in GitHub Desktop.
todo app
// CRITIQUE toujours dependre de l'evenement de DOMContentLoaded
// avant de lancer une instruction qui comporte une modification ou un ajout d'elements dans le DOM
document.querySelector('.new-todo').addEventListener('keypress', function (e) {
var key = e.keyCode;
if (key === 13) { // 13 is enter
// INTERDIT ! il faut utiliser le système de template fourni
//var txtToDo = document.querySelector('.new-todo').value;
//var li = document.createElement('li');
//var div = document.createElement('div');
//var input = document.createElement('input');
//var label = document.createElement('label');
//var button = document.createElement('button');
// dangereux: ne pas dependre du dom pour obtenir un id
var nbrDataId = fn();
function fn(){
var ul = document.querySelector('.todo-list');
return ul.childElementCount+1;
}
li.setAttribute('data-id', nbrDataId);
div.className = "view";
input.className = "toggle";
input.type = "checkbox";
input.addEventListener("click", function(e){
if(e.target.checked == true){
// dangereux pour target et pour les 2 parentNode utilisés
e.target.parentNode.parentNode.classList.add("completed");
}else{
// dangereux pour target et pour les 2 parentNode utilisés
e.target.parentNode.parentNode.classList.remove("completed");
}
});
label.innerText = txtToDo;
button.className = "destroy";
button.addEventListener("click", function(e){
// dangereux pour les parentNode utilisé
var ul = e.target.parentNode.parentNode.parentNode;
// dangereux pour les parentNode utilisé
var li = e.target.parentNode.parentNode;
ul.removeChild(li);
});
document.querySelector(".todo-list").appendChild(li);
li.appendChild(div);
div.appendChild(input);
div.appendChild(label);
div.appendChild(button);
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment