脚本1将会记录two
,但浏览器仍会将select
元素渲染为一个。该表格还将提交值one
。 脚本2将记录,呈现并提交two
。我期望他们是同义词并且做同样的事情。请解释他们为什么会有所不同以及我应该在哪里寻找相同的不一致。为什么select.setAttribute('value',value)产生与select.value = value不同的结果?
据我所知,DOM中的select
元素实际上并不包含value
属性。第一种方法明确指定它并从该元素中检索值,而不影响渲染。在select
元素的情况下,我该如何正确使用setAttribute
和getAttribute
?
演示文档:
<select id="el">
<option value="one">One</option>
<option value="two">Two</option>
</select>
脚本1:
document.getElementById('el').setAttribute('value','two');
console.log(document.getElementById('el').getAttribute('value'));
脚本2:
document.getElementById('el').value = 'two';
console.log(document.getElementById('el').value);
脚本2工作正常http://jsbin.com/osexuw/1/edit – elclanrs 2013-05-04 00:35:00
@elclanrs,是的,我意识到这一点。我想了解为什么*脚本1 *不起作用。我重读了我的文章,但仍然认为这很明确。 – Aeyoun 2013-05-04 00:38:36
你已经说过了 - 'value' *属性*对于'