Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firefox 在Internet Explorer中获取选择框的值_Firefox_Javascript_Html_Internet Explorer - Fatal编程技术网

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;
    }
  }