【发布时间】:2018-11-24 21:35:09
【问题描述】:
更新代码
所以这让我发疯了......我正在创建一个博客应用程序(Vanilla Js + Firebase)。
onDeleteButton 删除单个博客文章。它删除了两个前端 和后端。没有错误。
onEditButton 编辑单个博客文章。它也可以正常工作。
- 当我第一次编辑一个帖子,然后删除同一个帖子时,它会从后端和前端删除,看起来工作正常但在控制台日志中抛出了我和错误:
Uncaught TypeError: Cannot read property 'title' of null.错误消息指向 onEditButton 函数中的storeTitle.value = editPost.title;行。
为什么删除帖子后会调用onEditButton函数,但只有编辑过一次?
function onDeleteButton(event) {
event.preventDefault();
let id = event.target.parentElement.getAttribute('id');
let deletePost = document.getElementById(id);
firebase.database().ref('posts/' + id).remove();
deletePost.parentNode.removeChild(deletePost);
}
function onEditButton(event) {
event.preventDefault();
let editButton = document.getElementById('edit');
editButton.removeAttribute("hidden");
let id = event.target.parentElement.getAttribute('id');
let posts = firebase.database().ref('posts/' + id);
let storeTitle = document.getElementById('blog-title');
let storeContent = document.getElementById('blog-content');
localStorage.setItem("postID", id);
document.getElementById("blog-id-storage").innerHTML = localStorage.getItem("postID");
posts.on('value', function(snapshot) {
let editPost = snapshot.val();
storeTitle.value = editPost.title;
storeContent.value = editPost.content;
});
}
function enterEditingMode() {
if (document.getElementById('editing-mode-button').innerHTML === "Exit editing mode") {
exitEditingMode();
}
else {
...
addDeleteButton.addEventListener("click", this.onDeleteButton);
addEditButton.addEventListener("click", this.onEditButton);
})
}
}
html:
<button id="editing-mode-button" onclick="enterEditingMode()" class="btn btn-outline-primary">Editing mode</button>
【问题讨论】:
-
看看
onEditButton和onDeleteButton如何绑定到代码中的按钮会很有帮助 -
我已经编辑了上面的代码。
-
我多次点击编辑按钮,删除同一篇文章时,我收到相同次数的错误消息。
标签: javascript firebase