如何检查属性是否是布尔属性?

时间:2016-09-07 08:56:29

标签: javascript html html5

有没有办法检查某些HTML属性是否为布尔值?例如:

<input type="text" name="input" disabled=""/>

这里disabled属性是布尔值,我有一些代码,我需要在设置值之前检查该属性是否为布尔值。

为什么我需要这个?

如上所述here,我们可以将""或属性名称本身作为有效值,而不是truefalse

2 个答案:

答案 0 :(得分:2)

HTML的水平基本上没有区别。如果该属性只是没有值的名称,例如<input disabled>,这确实表明它是一个布尔属性。但是,如果它使用name="value"表示法,那么就无法区分它。 class="class"是布尔属性吗?不,它是classList,其中包含一个条目"class"foo=""怎么样?好吧,它既可以选择空值表示法的布尔属性,也可以选择没有设置值的属性。

只有解释器为属性分配boolean-ness;即,在将HTML解析为DOM时,解释器会像这样设置DOM属性,粗略地说:

domElement.disabled = htmlElement.hasAttribute('disabled');

如果你想知道哪些HTML元素是布尔值,你需要做一个解释器做的事情:保留一个DOM元素列表,其元素的属性有类型,并根据该规范解释HTML。

答案 1 :(得分:0)

要解决此问题,您可以通过以下方式获得typeof操作数:

var check_input = document.getElementById("check-input");

if(typeof(check_input.disabled) === "boolean"){
  alert('Yes');
}

这是一个包含完整代码的JSfiddle。我希望我的回答可以帮到你!