获取表单以填写点击

时间:2011-08-29 15:59:48

标签: javascript html

<script>
    function autofillForm() { document.getElementbyId('add').getElementsByName('foo')[0].value = 'bar'; }
</script>

<form id="add">
    Foo<input name="foo" value="" />
</form>

<a onClick="autofillForm()">Click to fill</a>

我只是想弄明白,当我运行该函数时,表单填充“bar”。我哪里错了?

5 个答案:

答案 0 :(得分:3)

document.getElementById('add').getElementsByName('foo').value = 'bar';
//---------------------------------------^ telltale sign that this is an array!

因此

document.getElementById('add').getElementsByName('foo')[0].value = 'bar';

编辑:当然,getElementsByName()仅支持文档对象本身,因此它必须是:

document.getElementsByName('foo')[0].value = 'bar';

答案 1 :(得分:1)

由于document.getElementbyId('add').getElementsByName('foo')返回一个NodeList(一个类似数组的对象),你需要这样做才能得到第一个:

document.getElementbyId('add').getElementsByName('foo')[0].value = 'bar';

答案 2 :(得分:0)

getElementsByName返回元素集 你需要得到这个数组的第一个并在其上设置值

var elm = document.getElementbyId('add').getElementsByName('foo');
elm[0].value = 'bar';

答案 3 :(得分:0)

getElementsByName()返回匹配元素的数组。即使只有其中一个。

尝试类似

的内容
var fooElements = document.getElementbyId('add').getElementsByName('foo');
fooElements[0].value = 'bar';

答案 4 :(得分:0)

首先按名称获取元素,然后使用for循环循环,为每个元素分配一个值。

<script>
function autofillForm() { var eles = document.getElementsByName('foo'); for(var i=0; i<eles.length; i++){eles[i].value = 'bar';} }
</script>