JavaScript错误:未捕获TypeError:无法读取未定义的属性“remove”

时间:2016-06-26 20:07:29

标签: javascript dom

我有一个脚本在添加成功后删除上传的文件,但是在加载时我在网站上收到此错误。

"Uncaught TypeError: Cannot read property 'remove' of undefined"

缺少什么?

<script>
onload=function() {
    document.querySelectorAll("li[id^='uploadNameSpan']")[0].remove();
}
</script>

1 个答案:

答案 0 :(得分:2)

基本上,您的问题是,在您调用此代码时,您在DOM中没有与查询"li[id^='uploadNameSpan']"对应的任何元素。因此querySelectorAll会返回一个空的NodeList undefined位于0位置(或任何位置)。

分析正在发生的事情:

var liElements = document.querySelectorAll("li[id^='uploadNameSpan']"); // this returns an empty NodeList

var nonExistentFirstElement = liElements[0]; // this is undefined, there's nothing at the first position

nonExistentFirstElement.remove(); // thus, this is an error since you're calling `undefined.remove()`

根据您的使用情况,您可以做的一件事是检查在尝试删除之前返回的项目数量:

var liElements = document.querySelectorAll("li[id^='uploadNameSpan']");
if (liElements.length > 0) {
  liElements[0].remove();
}

通常,您必须确保在尝试删除DOM时将元素放在DOM中。