1

我认为这是一个非常简单的问题,我想这是一个重复的问题,但是许多谷歌搜索和 stackoverflow 搜索都是空白的。

如果我有一个表格:

<form name="myForm">
    Data1: <input type='text' name='num1'>
    Data2: <input type='text' name='num2'>
    Data3: <input type='checkbox' name='num1'>
</form>

我想在一些本机 dom 数组中获取全部内容,例如:

document.myForm.allofthecontent

有这样的原生dom元素吗?

4

2 回答 2

1

document.forms['myForm']。这是一个HTMLFormElement包含标准元素属性的对象,以及一些与表单相关的额外方法和属性。

它还充当包含表单中输入元素的零索引数组。

是您可以利用它的一种方法的演示。

var f = document.forms['myForm'];
for (var i = 0; i < f.length; i++) {
    console.log(f[i].type.match(/checkbox|radio/) ? f[i].checked : f[i].value);
    //do something with the element's value
}

根据元素的类型,您可能需要使用除valueor以外的其他方式获取值checked

编辑:正如评论中提到的,我不知道一个本机函数会做你想做的事,所以不要害怕编写你自己的函数。

下面是一个在数组中返回表单元素值的函数的演示。

function getFormValues(form) {
    var ret = [ ];
    for (var i = 0; i < form.length; i++) {
        switch (form[i].type) {
            case 'checkbox':
            case 'radio':
                ret.push(form[i].checked);
                break;
            default:
                ret.push(form[i].value);
                break;
        }
    }
    return ret;
}

window.onload = function() {
    document.getElementsByTagName('button')[0].onclick = function() {
        console.log(getFormValues(document.forms['myForm']));
    };
};

我开始让它以关联数组(实际上是一个对象)的形式返回值,但我意识到如果你需要它,你不妨首先按名称选择它们。

于 2013-10-11T01:47:54.390 回答
0

document.myForm.elements将返回您可以循环访问的所有表单元素的集合。

var elems = document.myForm.elements;
for (var i = 0; i < elems.length; i++) {
    console.log(elems[i].value);
}

jsFiddle 示例

于 2013-10-11T01:51:08.357 回答