与这里的this问题相关。我可以检查DOM中的元素是否有值吗?我试图将其放入“if”语句中,但不确定我的方法是否正确。下面是:
if (document.getElementById('customx')){ //do something }
或者应该是:
if (document.getElementById('customx') == ""){ //do something }
EDIT:我的意思是,customx是一个文本输入框。我如何检查这个字段是否没有输入文本。
customx
tuwxkamq1#
getElementById方法返回一个Element对象,您可以使用该对象与元素进行交互。如果找不到该元素,则返回null。对于input元素,该对象的value属性在value属性中包含该字符串。通过利用&&运算符短路以及null和空字符串在布尔上下文中被视为“falsey”这一事实,我们可以将对元素存在和值数据存在的检查组合起来,如下所示:
getElementById
null
value
&&
var myInput = document.getElementById("customx"); if (myInput && myInput.value) { alert("My input has a value!"); }
ddrv8njm2#
如果在DOM中找不到该元素,getElementById将返回false。
var el = document.getElementById("customx"); if (el !== null && el.value === "") { //The element was found and the value is empty. }
ybzsozfc3#
var input = document.getElementById("customx"); if (input && input.value) { alert(1); } else { alert (0); }
fafcakar4#
你的第一个基本上是对的。这个,FYI,是不好的。它在DOM节点和字符串之间做相等性检查:
if (document.getElementById('customx') == ""){
DOM节点实际上是它们自己的JavaScript对象类型,因此这种比较根本不起作用,因为它是在两种截然不同的数据类型上进行相等性比较。
ou6hu8tu5#
您需要:
if (document.getElementById('customx').value === ""){ //do something }
value属性将为您提供一个字符串值,您需要将其与空字符串进行比较。
ndasle7k6#
var myInput = document.getElementById("customx"); if (myInput.value.length > 0) { //do something; }
(.length > 0是检查输入元素的另一种方法)
.length > 0
50pmv0ei7#
空不等于“无值”。HTMLInputElement.value是''当你有一个无效的输入。如果.value不是'',那么它不是空的。这是肯定的,但由于有.value === ''但不是空的时候,我们需要测试。例如,在Chrome中,有一个number输入类型,如果你输入.或e,它将被放置在输入框中,但是.value不会从''更改,因为它是无效。
HTMLInputElement.value
''
.value
.value === ''
number
.
e
<input type=number>
我们可以向浏览器询问更多信息,谢天谢地,ValidityState得到了非常好的支持。基本上,如果没有值,但浏览器说有一个错误的输入,那么它不是空的。
ValidityState
function isInputEmpty(input) { return !input.value && !input.validity.badInput; }
编辑:感谢@osullic在规范中找到此内容:控件的值是其内部状态。因此,它可能与用户的当前输入不匹配。https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#a-form-control's-value
7条答案
按热度按时间tuwxkamq1#
getElementById
方法返回一个Element对象,您可以使用该对象与元素进行交互。如果找不到该元素,则返回null
。对于input元素,该对象的value
属性在value属性中包含该字符串。通过利用
&&
运算符短路以及null
和空字符串在布尔上下文中被视为“falsey”这一事实,我们可以将对元素存在和值数据存在的检查组合起来,如下所示:ddrv8njm2#
如果在DOM中找不到该元素,getElementById将返回false。
ybzsozfc3#
fafcakar4#
你的第一个基本上是对的。这个,FYI,是不好的。它在DOM节点和字符串之间做相等性检查:
DOM节点实际上是它们自己的JavaScript对象类型,因此这种比较根本不起作用,因为它是在两种截然不同的数据类型上进行相等性比较。
ou6hu8tu5#
您需要:
value
属性将为您提供一个字符串值,您需要将其与空字符串进行比较。ndasle7k6#
(
.length > 0
是检查输入元素的另一种方法)50pmv0ei7#
空不等于“无值”。
HTMLInputElement.value
是''
当你有一个无效的输入。如果.value
不是''
,那么它不是空的。这是肯定的,但由于有.value === ''
但不是空的时候,我们需要测试。例如,在Chrome中,有一个number
输入类型,如果你输入.
或e
,它将被放置在输入框中,但是.value
不会从''
更改,因为它是无效。我们可以向浏览器询问更多信息,谢天谢地,
ValidityState
得到了非常好的支持。基本上,如果没有值,但浏览器说有一个错误的输入,那么它不是空的。编辑:感谢@osullic在规范中找到此内容:
控件的值是其内部状态。因此,它可能与用户的当前输入不匹配。
https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#a-form-control's-value