如何知道div
中是否存在特定输入类型?
如果我使用
$("#inputId").val()
并且没有元素存在,然后js给出错误。
那我怎么知道名为inputId
的输入元素是否存在?
尽快回复我
答案 0 :(得分:2)
您可以使用length属性,它会告诉您当前选择器中元素的数量。
if ($("#inputId").length > 0)
{
// code that depends on inputId being present can go in here
}
答案 1 :(得分:2)
您可以查看是否
$('#inputId').length > 0
即。如果当前选择器匹配任何元素。
但如果$('#inputId').length == 0
则$('#inputId').val()
为undefined
。这与输入存在的情况不同,因为val()
总是会产生一个字符串,即为或不为空。
现在,只有当您尝试使用值undefined
时,才会产生错误。例如,如果DOM中不存在#inputId
,则以下内容不起作用:
if($('#inputId').val().length > 0) { ... }
...因为您要尝试访问undefined.length
。但是,您仍然可以
if(!!$('#inputId').val()) {
// this code will only be executed if #inputId exists, and has a value that
// is not an empty string
}
如果您正在编写表单验证,那么执行
可能更有用if($('#inputId').val() !== '') {
// this code will be executed if #inputId has a value, or if it does not
// exist in the DOM at all
}
前一个条件检查.val()
的结果是否解析为true,对于空字符串或未定义的情况不是这种情况。 (null
,NaN
,false
或0
也不是这种情况,但.val()
永远不会产生任何结果)
后者检查.val()
的结果不完全是空字符串,对于实际值以及undefined
都是如此。
答案 2 :(得分:2)
if ($("#inputId").length) { }
不需要冗长,检查长度是否= 0或大于0:长度值本身在if语句中自动被转换为布尔值
答案 3 :(得分:1)
没有jQuery:
var input = document.getElementById('inputId');
if (input) {
// the input exists
alert(input.value);
} else {
// the input doesn't exist
alert('Ooops! An input with id "inputId" doesn\'t exist.');
}