【问题标题】:Javascript used to fill dropdowns works in everything but IE9用于填充下拉列表的 Javascript 适用于除 IE9 之外的所有内容
【发布时间】:2012-04-05 11:39:58
【问题描述】:

我正在使用以下 javascript 代码:

function dynamicSelect(id1, id2) {
  if (document.getElementById && document.getElementsByTagName) {
    var sel1 = document.getElementById(id1);
    var sel2 = document.getElementById(id2);
    var clone = sel2.cloneNode(true);
    var clonedOptions = clone.getElementsByTagName("option");
    refreshDynamicSelectOptions(sel1, sel2, clonedOptions);
    sel1.onchange = function() {
      refreshDynamicSelectOptions(sel1, sel2, clonedOptions);
    };
  }
}

function refreshDynamicSelectOptions(sel1, sel2, clonedOptions) {
  while (sel2.options.length) {
    sel2.remove(0);
  }
  var pattern1 = /( |^)(select)( |$)/;
  var pattern2 = new RegExp("( |^)(" +
  sel1.options[sel1.selectedIndex].value + ")( |$)");
  for (var i = 0; i < clonedOptions.length; i++) {
    if (clonedOptions[i].className.match(pattern1) || clonedOptions[i].className.match(pattern2)) {
      sel2.appendChild(clonedOptions[i].cloneNode(true));
    }
  }
}
window.onload = function() {
  dynamicSelect("worktype", "function");
  dynamicSelect("worktype2", "function2");
}

还有这段 HTML 代码:

<select class="dropdown" name="type" id="worktype2">
  <option class="select" value="select">Select Type...</option>
  <option value="clerk">White collar</option>
  <option value="worker">Blue collar</option>
</select><br /><br />

<label for="function" class="search-label">SELECT A FUNCTION</label><br />
<select name="function" class="dropdown" id="function2">
<option class="select" value="select">Select Function...</option>
<?php

  $getFunctionsSQL = "SELECT * FROM categories;";
  $getFunctionsSQLresult = mysql_query($getFunctionsSQL) or die(mysql_error()); 
  while ($record = mysql_fetch_array($getFunctionsSQLresult)) {
    echo "<option class='" . $record['type'] . "' value='". $record['category']."'>". $record['category'] ."</option>";
  }

?>
</select><br /><br />

它的作用是根据在另一个下拉列表中选择的内容填充一个下拉列表。 它适用于 Firefox、Chrome、IE7、IE8,...但不适用于 IE9...

还没有找到原因。

【问题讨论】:

  • IE console 中是否有任何错误?这是第一个看的地方
  • 这是一个小提琴jsfiddle.net/mplungjan/kXgjK
  • 我是:SCRIPT65535:无效的调用对象,在这一行:for (var i = 0; i
  • 这种 DOM 操作使用jQuery 要简单得多。感谢您经历了痛苦,但我确实建议您学习像 jQuery 这样的 JavaScript 库来混淆这些问题。

标签: php javascript internet-explorer-9 drop-down-menu


【解决方案1】:

变化

var clonedOptions = clone.getElementsByTagName("option");

var clonedOptions = clone.options;

似乎可以为 IE9 修复它,并且不会破坏 IE7、IE8 或 Chrome。

感谢http://www.codingforums.com/showthread.php?t=229946,它似乎有你的脚本的来源:-)

【讨论】:

  • 是的,成功了!非常感谢,是的,我在网上找到了脚本 :)
  • 太棒了!你想接受这个答案吗(如果它解决了你的问题)?拥有较高的接受百分比将向其他人表明值得花时间帮助您,干杯:-)
猜你喜欢
  • 2014-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-19
  • 1970-01-01
  • 2010-09-24
相关资源
最近更新 更多