如何知道某个特定元素是否存在?

时间:2011-12-20 08:39:36

标签: javascript jquery

如何知道div中是否存在特定输入类型?

如果我使用

$("#inputId").val()

并且没有元素存在,然后js给出错误。

那我怎么知道名为inputId的输入元素是否存在?

尽快回复我

4 个答案:

答案 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,对于空字符串或未定义的情况不是这种情况。 (nullNaNfalse0也不是这种情况,但.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.');
}