Próbuję dodać przyciski usuwania w javascript, który usuwa się po kliknięciu, ale nie wiem jak. Oto mój kod:
<script>
function displayPost(){
var thisDiv = document.getElementById("posts");
var theDate = document.createElement("P");
theDate.classList.add("post-date");
var trash= document.createElement("BUTTON");
trash.classList.add("post-trash");
trash.innerHTML = '<i class="fa fa-window-close" aria-hidden="true"></i>';
thisDiv.appendChild(theDate);
thisDiv.appendChild(trash);
theDate.innerHTML = new Date();
trash.onclick = del(this);
}
function del(x){
var delTrash = document.getElementsByClassName("post-trash");
var delDate = document.getElementsByClassName("post-date");
var index = deltrash.indexof(x);
thisdiv.removeChild(hideTrash[index]);
thisdiv.removeChild(delDate[index]);
}
</script>
Przepraszam, jestem całkiem nowy w Javascript. Każda pomoc jest mile widziana. Dziękuję Ci
0
user672518
24 marzec 2020, 10:50
2 odpowiedzi
Najlepsza odpowiedź
Wartość onclick
powinna być funkcją, wywołujesz funkcję podczas wykonywania przypisania.
trash.onclick = function() { del(this) };
Ponadto thisDiv
jest lokalne dla displayPost()
, nie możesz go używać w del()
. Musisz użyć x.parentElement
.
Masz wiele innych literówek i drobnych błędów w del()
, zobacz poniższe poprawki.
function displayPost() {
var thisDiv = document.getElementById("posts");
var theDate = document.createElement("P");
theDate.classList.add("post-date");
var trash = document.createElement("BUTTON");
trash.classList.add("post-trash");
trash.innerHTML = '<i class="fa fa-window-close" aria-hidden="true"></i>';
thisDiv.appendChild(theDate);
thisDiv.appendChild(trash);
theDate.innerHTML = new Date();
trash.onclick = function() {del(this);};
}
function del(x){
var delTrash = document.getElementsByClassName("post-trash");
var delDate = document.getElementsByClassName("post-date");
var thisDiv = x.parentElement;
var index = Array.from(delTrash).indexOf(x);
thisDiv.removeChild(delTrash[index]);
thisDiv.removeChild(delDate[index]);
}
<div id="posts">
</div>
<button onclick="displayPost()">Add post</button>
1
Barmar
24 marzec 2020, 08:11
Jeśli dobrze odpowiem na twoje pytanie, może ci to pomóc.
<div class="container">
<!-- some posts with delete button -->
<div class="post">
Post One
<button class="delete-post">Delete Post</button>
</div>
<div class="post">
Post Two
<button class="delete-post">Delete Post</button>
</div>
<div class="post">
Post Three
<button class="delete-post">Delete Post</button>
</div>
</div>
<script>
window.onload = () => {
let postsDelBtn = document.getElementsByClassName("delete-post");
console.log(postsDelBtn)
for(let i = 0; i < postsDelBtn.length; i++){
postsDelBtn[i].addEventListener('click', (event) => {
event.target.parentNode.remove();
})
}
}
</script>
0
Nikhil Singh
24 marzec 2020, 08:37