避免jquery select中的类型错误
Avoid type error from jquery select
我必须从jQuery选择器中获取一个属性:
var id=$("#nav-titles li.active a").attr("href").replace(/^#/,"");
如果jquery选择器js中没有项目,则会记录此错误:
TypeError: $(...).attr(...) is undefined
如何避免这个错误并存储"未定义"(或false,或null)的id变量?
我知道我可以做到:
var id=$("#nav-titles li.active a").length && $("#nav-titles li.active a").attr("href")?$("#nav-titles li.active a").attr("href").replace(/^#/,""):null;
但是,对于一个如此简单的请求,使用3个选择器真的有必要吗?
如果您不确定是否存在锚标记,这将更具可读性
var $anchor = $('#nav-titles li.active a');
if( $anchor.length > 0 && $anchor.attr('href')){
id= $anchor.attr("href").replace(/^#/,"");
}
无需检查集合的length
。当.attr
返回undefined
值时,集合为空。以下代码段使用||
运算符。当attr
返回一个错误值时,会传递一个空字符串。
var id = ($("#nav-titles li.active a").attr("href") || '').replace(/^#/,"") || null;
听起来你想对你找到的每个元素都这样做:
var id=$("#nav-titles li.active a").each(function()
{
$( this ).attr("href").replace(/^#/,"");
});
相关文章:
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- 未捕获的类型错误:无法读取属性'删除'的未定义
- 未捕获的类型错误:无法读取属性'name'即使它存在,也无法定义
- 看到“;未捕获的类型错误:无法读取属性'weight'未定义的“;尽管按照字面上的指示
- Soundcloud api"未捕获的类型错误:无法读取属性'uri'“未定义”;
- 未捕获的类型错误:无法读取属性'addEventListener'的null chrome扩展名
- 如何解决这种情况下的非法调用类型错误
- 未捕获的类型错误:$(..).dataTable不是函数
- 未捕获的类型错误:无法读取属性'状态'在react中为null
- 未捕获的类型错误:topFrame.window.changeSelectedBarStyle不是函数,原因是什么
- 类型错误:url未定义extjs 4正在填充组合框
- 未捕获的类型错误:无法读取属性'中止'的未定义
- 类型错误'未定义'不是对象(正在评估'navigator.connection.type'
- 未捕获的类型错误:无法设置属性'innerHTML'如果为null,则将脚本移动到正文不会;不起作用
- 未捕获的类型错误:undefined不是函数$
- 输入类型文件的未捕获类型错误
- 未捕获的类型错误:无法设置属性'背景'的未定义
- "未捕获类型错误/丢弃意外“;因为一句台词而出现?(HTML w/<脚本>)
- Javascript未捕获类型错误:无法读取属性'0'的未定义