我正在使用全局变量的存在来做if
语句。变量:
_class = $('a').parent().closest('*[class]')[0].className;
在这种情况下,没有父母,因此没有课程。我想在控制台中收到这些信息,所以我做了if
声明:
if ( _class !== undefined ) {
console.log('has class');
}else{
console.log('undefined');
}
在Chrome检查器中,我收到Uncaught TypeError: Cannot read property 'className' of undefined
,而我的if
声明没有其他内容。我的问题:我该怎么做才能摆脱错误信息并输出我的if
声明?我尝试使用null
和length
等等,似乎没有任何效果。
示例:JsFiddle
答案 0 :(得分:4)
尝试处理该错误,
_class = $('a').parent().closest('*[class]')[0] || "NOPE";
if (_class === "NOPE") {
console.log('undefined');
} else {
if (_class.className !== undefined) {
console.log('has class');
} else {
console.log('undefined');
}
}
答案 1 :(得分:3)
问题在于您的全局任务:代码并没有达到您的if语句。您尝试从空引用派生属性 - 可能是parent
或closest
调用的结果。您需要检查初始分配。
答案 2 :(得分:3)
在尝试获取className属性之前,您应该检查元素是否存在:
_class = $('a').parent().closest('*[class]').length ? $('a').parent().closest('*[class]')[0].className : undefined;
答案 3 :(得分:2)
首先检查您是否至少选择了一个元素
elements = $('a').parent().closest('*[class]');
if (elements.length > 0) {
_class = elements[0].className;
if ( _class !== undefined ) {
console.log('has class');
}else{
console.log('undefined');
}
}
else {
console.log('no element found');
}
答案 4 :(得分:1)
这是因为你试图找到jQuery Object的className。但className - 它是DOM元素的方法,它通常使用简单的javascript方法返回,例如getElementById等。 如果使用jQuery Object,请使用jquery方法,在这种情况下使用methid .attr('class');