<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”。我哪里错了?
答案 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>