检测未定义的jQuery

检测未定义的jQuery,jquery,asp.net-mvc-5,Jquery,Asp.net Mvc 5,我有这个剧本 $('a').on('click', function () { var vIDString = this.getAttribute('id'); if (vIDString === undefined) { //do nothing alert('Hit undefined') } else { var vID = vIDString.substring(8); } }) 我尝试了

我有这个剧本

 $('a').on('click', function () {
     var vIDString = this.getAttribute('id');
     if (vIDString === undefined) {
         //do nothing
         alert('Hit undefined')
     } else {
         var vID = vIDString.substring(8);
     }
 })
我尝试了x===undefined,x=='undefined',typeof x====undefined,typeof x==='undefined'和我能想到的所有其他东西,它很高兴地跳过了这一点,抛出了“无法获得未定义或空引用的属性”子字符串”

知道我做错了什么吗


谢谢你

你永远不会得到未定义的。事实上,来自:

getAttribute()返回元素上指定属性的值。如果给定的属性不存在,则返回的值将为null或“”(空字符串);有关详细信息,请参见注释

因此,您需要针对null或空字符串进行测试:

$('a')。在('click')上,函数(e){
e、 预防默认值();
var vIDString=this.getAttribute('id');
if(vIDString==null | | vIDString.length==0){
//无所事事
console.log('Hit undefined')
}否则{
log('ID为:'+vIDString);
//var vID=vIDString.substring(8);
}
})



您永远不会得到未定义的。事实上,来自:

getAttribute()返回元素上指定属性的值。如果给定的属性不存在,则返回的值将为null或“”(空字符串);有关详细信息,请参见注释

因此,您需要针对null或空字符串进行测试:

$('a')。在('click')上,函数(e){
e、 预防默认值();
var vIDString=this.getAttribute('id');
if(vIDString==null | | vIDString.length==0){
//无所事事
console.log('Hit undefined')
}否则{
log('ID为:'+vIDString);
//var vID=vIDString.substring(8);
}
})



的值是什么,如果记录
vIDString
,您会得到什么?未定义的值是什么,如果记录
vIDString
,您会得到什么?未定义的值是有效的值。非常感谢。仍然发现=、==和===的用法confusing@gchq
=
用于分配,例如
var x=5
<代码>=和
==
用于比较,后者比前者更严格。你几乎应该总是使用
==
.Terry-谢谢你的澄清。经过几十年的VB编程,有些细微差别似乎与“曲线代码”背道而驰:-)。非常感谢。仍然发现=、==和===的用法confusing@gchq
=
用于分配,例如
var x=5
<代码>=和
==
用于比较,后者比前者更严格。你几乎应该总是使用
==
.Terry-谢谢你的澄清。经过几十年的VB编程,有些细微差别似乎与“曲线代码”的直觉背道而驰:-)