i've been watching tutorial on how cross out text when clicking on checkbox
next text , code doesn't work, though same 1 in tutorial (where works fine).
i've been looking @ code long can't see whats wrong, maybe typo can't see… knows why?
here javascript code (just relevant part)
function updatingitem() { var cbid = this.id.replace("cb_", ""); var textitem = document.getelementbyid("item_" + cbid); textitem.style.textdecoration = "line-through"; } function additem() { totalitems++; var entry = document.createelement("li"); var checkbox = document.createelement("input"); checkbox.type = "checkbox"; checkbox.id = "cb_" + totalitems; checkbox.onclick = updatingitem; var span = document.createelement("span"); span.id = "item_" + totalitems; span.innerhtml = textitem; var textitem = document.getelementbyid("textitem"); entry.innertext = textitem.value; var location = document.getelementbyid("todolist"); entry.appendchild(checkbox); entry.appendchild(span); location.appendchild(entry); }
you main issue have span.innerhtml = textitem;
set before getting value var textitem = document.getelementbyid("textitem");
but hey...
css only:
label{ display: block; } label input[type=checkbox]:checked + span{ text-decoration: line-through; }
<label> <input type="checkbox"> <span>buy coffee</span> </label> <label> <input type="checkbox" checked> <span>ask question on so</span> </label> <label> <input type="checkbox"> <span>drink coffee</span> </label>
and here's much simpler trivial not-quite-a-tutorial self-explanatory js code:
var todolist = document.getelementbyid("todolist"); var itemtext = document.getelementbyid("itemtext"); var add = document.getelementbyid("add"); add.addeventlistener("click", function(){ var text = itemtext.value.trim(); // if no text entered - nothing if(!text.length) return ; // create , append html var item = "<li><label><input type='checkbox'> <span>"+ text+"</span></label></li>"; todolist.insertadjacenthtml('beforeend', item); // clear text our input itemtext.value = ""; });
label{ display: block; } label input[type=checkbox]:checked + span{ text-decoration: line-through; background:rgba(0,255,0, 0.2); }
<ul id="todolist"> <li> <label> <input type="checkbox"> <span>buy coffee</span> </label> </li> <li> <label> <input type="checkbox" checked> <span>ask question on so</span> </label> </li> <li> <label> <input type="checkbox"> <span>drink coffee</span> </label> </li> </ul> <input id="itemtext" type="text"> <button id="add">add list</button>
https://developer.mozilla.org/en-us/docs/web/api/element/insertadjacenthtml
https://developer.mozilla.org/en-us/docs/web/api/eventtarget/addeventlistener
Comments
Post a Comment