I am trying to append a list item based on the input value. However, the list item doesn’t get appended. I tried to have script tags at different points, but that doesn’t help. What am I missing?
Here is my HTML
JavaScript
x
20
20
1
<body>
2
<main>
3
<div>
4
<form>
5
<input type="text" name="newtodo" id="newtodo" placeholder="New Todo...">
6
<button type="submit" id="addtodo">+</button>
7
</form>
8
<div class="AddedTodo">
9
<ul id="myList">
10
11
</ul>
12
</div>
13
<div>
14
<p id="clearAll">Clear All</p>
15
</div>
16
</div>
17
</main>
18
</body>
19
<script type="text/javascript" src="script.js"></script>
20
Here is my JavaScript.
JavaScript
1
6
1
document.getElementById("addtodo").onclick = function addItem() {
2
var ul = document.getElementById("newtodo").value;
3
var li = "<li>" + ul + "</li>";
4
document.getElementById("myList").appendChild(li);
5
}
6
Advertisement
Answer
You need to use createElement function to create your li
to do items
. and then use appendChild on that – Also consider using addEventListener
I have also added a functionality of clearAll
button. Which will let you clear all to do items
from your list.
Also, since you are using a form
in your HTML which means the default behaviour is that it will reload the page. To stop that from happening use preventDefault method.
Live Demo:
JavaScript
1
18
18
1
var list = document.getElementById("myList")
2
3
//Add to do's
4
document.getElementById("addtodo").addEventListener('click', function(e) {
5
e.preventDefault()
6
var inputValue = document.getElementById("newtodo");
7
var li = document.createElement('li')
8
li.textContent = inputValue.value
9
list.appendChild(li)
10
inputValue.value = ''
11
}, false);
12
13
14
//Clear all
15
document.getElementById("clearAll").addEventListener('click', function(e) {
16
e.preventDefault()
17
list.innerHTML = ''
18
}, false);
JavaScript
1
18
18
1
<body>
2
<main>
3
<div>
4
<form>
5
<input type="text" name="newtodo" id="newtodo" placeholder="New Todo...">
6
<button type="submit" id="addtodo">+</button>
7
</form>
8
<div class="AddedTodo">
9
<ul id="myList">
10
11
</ul>
12
</div>
13
<div>
14
<button id="clearAll">Clear All</button>
15
</div>
16
</div>
17
</main>
18
</body>