0

这几天一直在和一些代码搏斗,一直没有进展。我需要帮助。这是我正在尝试做的事情:

  • 手动填充两个下拉列表中的第一个
  • 获取第一个的选定值,用它来查询数据库,用查询结果填充第二个下拉列表。
  • 使用按钮触发另一个功能以生成 PDF。

我的网站上有这段代码,并且正在工作。问题是它只适用于 FF 和 Chrome。我无法在 IE 中填充下拉列表。为了测试,我已经将代码剥离到几乎没有,只是为了看看 IE 是否会填充第二个下拉列表,但它不会。下面是测试页面的代码:

测试.htm:

<html><head>
<script type="text/javascript">
function showCMB2(str)
{
if (str=="")
{
  document.getElementById("cmb2").innerHTML="";
  return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
{// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
  {
    document.getElementById("cmb2").innerHTML=xmlhttp.responseText;
  }
}

xmlhttp.open("GET","test.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>

<form>
<select name="cmb1" id="cmb1">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</form>
<br />

<input type="button" value="Retrieve Data"   
 OnClick="showCMB2(cmb1.options[cmb1.selectedIndex].value)"> 
<br><br><br>
<span name="cmb2" id="cmb2"></span>
</body>
</html> 

测试.php:

<?php
echo '<select name="cmb2" id="cmb2">';
echo '<option value="cmb2">This is test</option>';
echo '</select>';
?> 

就像我说的,这在 FF 和 Chrome 中效果很好,但在 IE 中不行。id 为 cmb2 的 test.htm 中的跨度我已经尝试过制作它,甚至是 ,行为没有变化。任何人都可以提供任何见解吗?这看起来很简单。

4

2 回答 2

0

设置 innerHTML 在 IE8 中无法正常工作。而是使用 jquery 函数 $('#elementId').html(' .... ');

请注意,您必须具有 value= 属性,否则当 IE 将选项值传递给另一个 javascript 函数时,它将传递 null。

于 2013-01-25T11:30:19.767 回答
0

您来自服务器的响应是尝试添加一个与您分配给 span 元素具有相同 id 的元素 - id 必须是唯一的。

于 2012-07-11T14:19:42.367 回答