这是我的代码:
category = $(document).find(".chosen-single:not(.chosen-default) > span:first-child")[0].outerHTML
有时会抛出:
未捕获的TypeError:无法读取未定义的属性“outerHTML”
我应该采取什么样的条件?
答案 0 :(得分:1)
一个很好的技巧是使用匿名函数,像这样,将查询作为参数传递
dropMimeData
它将为您节省设置额外变量和if / then / else语句。
答案 1 :(得分:0)
让您的代码看起来像这样:
var element = $(document).find(".chosen-single:not(.chosen-default) > span:first-child")[0];
if(element) {
category = element.outerHTML
}
它似乎有时候你正在搜索的元素缺失,所以结果是未定义的,为了避免这个问题,检查是否找到你要查询的内容
答案 2 :(得分:0)
检查本机DOM元素或检查jQuery对象的长度:
var obj = $(document).find(".chosen-single:not(.chosen-default) > span:first-child")[0];
var category = "";
if (obj) category = obj.outerHTML;
检查长度:
var $obj = $(document).find(".chosen-single:not(.chosen-default) > span:first-child");
var category = "";
if ($obj.length) category = obj.outerHTML;
答案 3 :(得分:0)
只需将元素存储在变量中,然后在访问之前进行检查:
var $chosenItem = $(document).find(".chosen-single:not(.chosen-default) > span:first-child")[0];
category = $chosenItem && $chosenItem.outerHTML;
或者用您选择的条件替代。
答案 4 :(得分:0)
创建一个计算该特定类的元素数量的变量,然后创建一个if语句。
例如:
var chosenClass = document.querySelectorAll('.chosen-single').length;
if(chosenClass == 0) {
null;
}
else {
}