代码之家  ›  专栏  ›  技术社区  ›  Takit Isy Surendra

如果javascript中的属性未设置或有故障,则获取默认值

  •  0
  • Takit Isy Surendra  · 技术社区  · 6 年前

    我想知道是否有一种方法可以获取尚未设置的属性的默认值。

    例如,在这个简单的片段中:

    let inputs = document.querySelectorAll('input');
    
    inputs.forEach(function(elm){
      console.log(elm.getAttribute('type'));
    });
    <input />
    <input type='integer'/><!-- This one is invalid -->
    <input type='number'/>
    <input type='submit'/>

    第一个结果为“空”,第二个结果为“整数”。

    我们都知道没有 type 显式定义的属性(或无效的属性,如在我的代码段中),该属性 input 默认情况下被视为 input type="text" . 但是,有没有什么方法可以显示这一点呢?

    我的意思是是否有任何函数会返回“文本”而不是“空”或错误值?
    可以这样使用的东西: input.getAttributeOrDefault("type") ?

    事先谢谢你的答复。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Bertrand    6 年前

    如果没有为输入元素提供默认类型值,则为“text”。您可以通过以下方式进行访问:

    let input = document.querySelector('input');
    console.log(input.type);
    <input />

    --编辑-- 注意整数不是有效的类型,因此它将回退到文本

    let inputs = document.querySelectorAll('input');
    
    inputs.forEach(function(elm){
      console.log(elm.type);
    });
    <input />
    <input type='integer'/>
    <input type='number'/>
    <input type='submit'/>
        2
  •  1
  •   Md Johirul Islam    6 年前

    要访问输入类型,可以使用以下代码 input.type

    let input = document.querySelector('input');
    console.log(input.type);
    <input />

    编辑

    代码使用 输入类型 适用于所有有效案例。 type = "integer" 应替换为 type = "number" text

    let inputs = document.querySelectorAll('input');
    
    inputs.forEach(function(elm){
      console.log(elm.type);
      //console.log(elm.getAttribute('type'));
    });
    <input />
    <input type='number'/>
    <input type='submit'/>