I created an unordered list in HTML with a delete button for each li then I went to CSS and set the button should be on the left side, I created my javascript to add automatic li items and I should also be able to delete items by clicking on the delete button. however, whenever I add a new item the new delete button is on the right side, how can I make it should be on the left side
var button = document.getElementById("enter") var input = document.getElementById("user"); var ul = document.querySelector("ul"); var li = document.querySelectorAll("li"); var clearButton = document.getElementsByClassName("clearButton"); function listItems() { return input.value.length } function createListElement() { var li = document.createElement("li"); li.appendChild(document.createTextNode(input.value)); ul.appendChild(li); var newButton = document.createElement("button"); newButton.innerHTML = "X"; li.appendChild(newButton); input.value = ""; li.addEventListener("click", function() { li.classList.toggle("done"); }) newButton.addEventListener("click", function() { ul.removeChild(li); }) } function addItemAfterEnter() { if (listItems() > 0) { createListElement(); } } function addItemAfterKeypress(event) { if (listItems() > 0 && event.keyCode === 13) { createListElement(); } } button.addEventListener("click", addItemAfterEnter); input.addEventListener("keypress", addItemAfterKeypress) for (var i = 0; i < li.length; i++) { li[i].addEventListener("click", function() { this.classList.toggle("done"); }) } for (var i = 0; i < clearButton.length; i++) { clearButton[i].addEventListener("click", function() { this.parentNode.remove(); }) }
ul { list-style-type: none; padding: 0; width: 15rem; } li button { color: red; margin-right: .5rem; border-radius: 10px; border: none; }
<h1>Javascript event listener</h1> <input id="user" type="text" placeholder="enter item here"> <button id="enter">Enter</button> <p id="test"></p> <ul> <li class="red blue" random="26"><button class="clearButton">X</button>lettuce</li> <li><button class="clearButton">X</button>apples</li> <li><button class="clearButton">X</button>oranges</li> <li><button class="clearButton">X</button>fruits</li> <li><button class="clearButton">X</button>candy</li> </ul>
Switch the order of the append child statements.
function createListElement() {
var li = document.createElement("li");
var newButton = document.createElement("button");
newButton.innerHTML = "X";
li.appendChild(newButton);
li.appendChild(document.createTextNode(input.value));
ul.appendChild(li);
input.value = "";
li.addEventListener("click", function() {
li.classList.toggle("done");
})
newButton.addEventListener("click", function() {
ul.removeChild(li);
})
}
This should work
ul {
list-style-type: none;
padding: 0;
width: 15rem;
}
li button {
color: red;
margin-right: .5rem;
border-radius: 10px;
border: none;
}
in my HTML i added just a few li items, however, when ever I add random items as I created the createElement in js the button is on the right side instead of the left side as I set it up for my HTML li
<!DOCTYPE html>
<html>
<head>
<title>Javascript</title>
<link rel="stylesheet" type="text/css" href="style4.css">
</head>
<body>
<h1>Javascript event listener</h1>
<input id="user" type="text" placeholder="enter item here">
<button id="enter">Enter</button>
<p id="test"></p>
<ul>
<li class="red blue" random="26"><button class="clearButton">X</button>lettuce</li>
<li><button class="clearButton">X</button>apples</li>
<li><button class="clearButton">X</button>oranges</li>
<li><button class="clearButton">X</button>fruits</li>
<li><button class="clearButton">X</button>candy</li>
</ul>
<script type="text/javascript" src="script2.js"></script>
</body>
</html>
Add the button
to the new li
first, and then add the textNode
.
var button = document.getElementById("enter") var input = document.getElementById("user"); var ul = document.querySelector("ul"); var li = document.querySelectorAll("li"); var clearButton = document.getElementsByClassName("clearButton"); function listItems() { return input.value.length } function createListElement() { // create the new li element var li = document.createElement("li"); // add the button to the li var newButton = document.createElement("button"); newButton.innerHTML = "X"; li.appendChild(newButton); // then add the text to the li li.appendChild(document.createTextNode(input.value)); input.value = ""; li.addEventListener("click", function() { li.classList.toggle("done"); }); newButton.addEventListener("click", function() { ul.removeChild(li); }); // add the constructed li to the ul ul.appendChild(li); } function addItemAfterEnter() { if (listItems() > 0) { createListElement(); } } function addItemAfterKeypress(event) { if (listItems() > 0 && event.keyCode === 13) { createListElement(); } } button.addEventListener("click", addItemAfterEnter); input.addEventListener("keypress", addItemAfterKeypress) for (var i = 0; i < li.length; i++) { li[i].addEventListener("click", function() { this.classList.toggle("done"); }) } for (var i = 0; i < clearButton.length; i++) { clearButton[i].addEventListener("click", function() { this.parentNode.remove(); }) }
ul { list-style-type: none; padding: 0; width: 15rem; } li button { color: red; margin-right: .5rem; border-radius: 10px; border: none; } /* bonus styles */ li:hover, li button:hover { cursor: pointer; }.done { text-decoration: line-through; }
<h1>Javascript event listener</h1> <input id="user" type="text" placeholder="enter item here"> <button id="enter">Enter</button> <p id="test"></p> <ul> <li class="red blue" random="26"><button class="clearButton">X</button>lettuce</li> <li><button class="clearButton">X</button>apples</li> <li><button class="clearButton">X</button>oranges</li> <li><button class="clearButton">X</button>fruits</li> <li><button class="clearButton">X</button>candy</li> </ul>
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.