Firefox 在Internet Explorer中获取选择框的值
我有一个选择框:Firefox 在Internet Explorer中获取选择框的值,firefox,javascript,html,internet-explorer,Firefox,Javascript,Html,Internet Explorer,我有一个选择框: <select id="item1" name="Item 1"> <option> </option> <option> Camera </option> <option> Microphone </option> <option> Tripod </option> </select> item1始终显示为空,从不显示所选选项。但是,这适用
<select id="item1" name="Item 1">
<option> </option>
<option> Camera </option>
<option> Microphone </option>
<option> Tripod </option>
</select>
item1始终显示为空,从不显示所选选项。但是,这适用于。使用item.value适用于除非常旧的Netscape 4 Anywhere?之外的所有浏览器?。在这种情况下它不起作用的原因是,您在选项中没有值属性。您应该为每个属性声明值。当前只有文本属性,通常在未声明值时默认为值。或者,您可以在window onload事件中推送一些代码,使每个选项的值与文本相同 第三种方法是使用下面的代码,这是一种老式的方法:
var s = document.getElementById('item1');
var item1 = s.options[s.selectedIndex].value;
作为答案1的补充,请注意.selectedIndex有时可能为-1,这将在传递到.options[n]时引发异常。因此,您可能需要执行快速测试:
var s = document.getElementById('item1');
var item = (-1 != s.selectedIndex)?
s.options[s.selectedIndex] : null;
编辑
根据Tim的评论,如果通过JavaScript设置s.selectedIndex或创建一个空框,则s.selectedIndex可以为-1。因为选项标记没有属性值IE6,IE7将返回一个空字符串。 应从选项对象的文本字段中读取值,如下所示:
var item1 = s.options[s.selectedIndex].text;
在item1中,您将获得所需的值,而不会破坏与Firefox和IE 8的兼容性。从名为layerDetails的选择框中获取可用列名的代码。styleColumn选择标记具有相同的名称和Id,适用于所有浏览器
var columnName = document.getElementsByName('layerDetails.styleColumn')[0].value;
if ( columnName == null || columnName == '' )
{
columnName = document.getElementById('layerDetails.styleColumn').value;
}
if ( columnName == null || columnName == '' )
{
var select = document.getElementById('layerDetails.styleColumn');
columnName= select.options[select.selectedIndex].value;
if ( columnName == null || columnName == '' )
{
columnName= select.options[select.selectedIndex].text;
}
}
你知道什么时候selectedIndex可以是-1吗?我从未见过这种情况。selectedIndex可以是-1的唯一方法是通过JavaScript将其明确设置为-1。但是,我投票太匆忙了,现在我无法删除它,除非您进行编辑。抱歉。JSREF声明:如果未选择任何选项,selectedIndex的值为-1。本质上没有错误,我有一个检查来检查值,并且该值永远不会是greg,@Marco Z的回答使用.text而不是.value在IE7上为我工作。也许是更新答案,或者解释为什么不呢?我通常只使用jQuery。向元素添加一个类,无论是select、input、textarea还是hidden字段,然后使用$'element'.val检索其值。简单的豌豆。
var columnName = document.getElementsByName('layerDetails.styleColumn')[0].value;
if ( columnName == null || columnName == '' )
{
columnName = document.getElementById('layerDetails.styleColumn').value;
}
if ( columnName == null || columnName == '' )
{
var select = document.getElementById('layerDetails.styleColumn');
columnName= select.options[select.selectedIndex].value;
if ( columnName == null || columnName == '' )
{
columnName= select.options[select.selectedIndex].text;
}
}