在没有querySelector的IE和Edge中获取表单元素值

时间:2016-10-04 19:51:14

标签: javascript internet-explorer microsoft-edge

假设我有一个表单,其中包含两个名为“question1”的单选按钮。还有另一个名为“question2”的文本输入。我想要最有效的方法来检查两个输入是否都已填满,所以我需要一些可以访问这些输入值的代码。

此行适用于大多数浏览器,但适用于Microsoft,因为它们有一个愚蠢的HTMLCollection层:

var val1 = document.forms[0].elements['question1'].value // undefined in Microsoft;
var val2 = document.forms[0].elements['question2'].value // undefined in Microsoft;

使用querySelector,我可以做一些适用于Microsoft的事情:

document.querySelector("form input[name='question1']:checked").value;
document.querySelector("form input[name='question2']").value;

请注意,这两行不同。我实际上有几十个这样的问题,所以我更喜欢一个适用于所有这些问题的代码。是否有一种Microsoft方式的功能类似于代码的第一部分?

澄清:

我想知道是否有一行代码适用于任何类型的输入。

1 个答案:

答案 0 :(得分:0)

尝试使用IE:

var allElems = document.getElementsByTagName('question1');
for (i = 0; i < allElems.length; i++) {
    if (allElems[i].type == 'radio' && allElems[i].value !== ' ') {
        allElems[i].checked = true;
    }
}

其余的:

   var elements = document.getElementsByName('question1');
     for (i=0;i<elements.length;i++) {
     if(elements[i].value !== "") {
      elements[i].checked = true;
    }
  }