循环使用HTML表单元素以获取选择类型

时间:2015-11-10 04:37:32

标签: javascript jquery html

<select id="crewLeader" class="select">
    <option></option>
</select>

我有输入和选择,其中看起来我使用此代码的选择框不是抓取选择框,我想因为它不是输入类型

var cbResults = "Issues Checked \n \n";
var textareas = "";
var selectbox = "";

for (var i = 0; i < form1.elements.length; i++) {
    var e = form1.elements[i];
    //console.log(e.name + "=" + e.value);

    if (form1.elements[i].type == 'checkbox') {
        if (form1.elements[i].checked == true) {
            cbResults += form1.elements[i].value + ' \n';
          //console.log('cb=' + cbResults);
        }
    } else if (form1.elements[i].type == 'textarea') {
        textareas += form1.elements[i].name + " = " + form1.elements[i].value + ' \n';
    } else if (form1.elements[i].type == 'select') {
        //selectbox += form1.elements[i].value + ' \n';
        console.log('select');
        selectbox += form1.options[e.selectedIndex].text + ' / ' + form1.options[e.selectedIndex].value + ' \n';
    }


}

如何循环获取每个选择框名称和所选值?

这不起作用

 form1.elements[i].type == 'select')

更新

这部分&#34;如果符合以下条件,则可以输入:

   else if(form1.elements[i].tagName === 'SELECT')

但是这段代码会抛出错误:

 selectbox += form1.options[e.selectedIndex].text + ' / ' + form1.options[e.selectedIndex].value + ' \n';

错误:

TypeError: Cannot read property '0' of undefined

1 个答案:

答案 0 :(得分:0)

根据W3Schools documentation

  

对于下拉列表,这将是“select-one”或“select-multiple”。

所以,谈论单选择选择,你需要将你的条件改为:

form1.elements[i].type == 'select-one'

P.S。将if链替换为switch

是个好主意
switch (form1.elements[i].type) 
{
    case 'select-one':
        break;
    case 'checkbox':
        break;
    case 'textarea': 
        break;
    default:
        console.log("Unknown type: " + form1.elements[i].type);
}