【问题标题】:Dynamic Drop down not working in IE11?动态下拉在 IE11 中不起作用?
【发布时间】:2015-07-29 00:03:05
【问题描述】:
var vehicleLineDD = document.getElementById("vehicleLineDD");
for (i = 0; i < arr.length; i++) {
    vehicleLineOp.text = arr[i].code + ': ' + arr[i].desc;
    vehicleLineOp.value = arr[i].code;
    vehicleLineDD.add(vehicleLineOp, null);
}

嗨朋友们,我在这里附上我现在敲击的代码。 问题是 vehicleLineDD 是动态下拉。取决于另一个下拉列表,我应该在此处加载值。 它在 IE8 中运行良好,但在 IE11 中,所有值都正常出现,除了 vehicleLineDD.add(vehicleLineOp, null); 不添加值,仅添加最后一个值。每次在这里更改第一个下拉菜单时,我只能看到一个选项。 谁能帮我解决这个问题。提前致谢。

【问题讨论】:

  • 你在哪里定义vehicleLineOp
  • 在这些代码之前,我定义了 vehicleLineOp 实际问题出在 .add 方法中,因为我在 add 方法之前放置了警报,它给出了正确的结果,但由于没有添加到车辆线路DD (IE11)

标签: javascript java jsp internet-explorer


【解决方案1】:

您需要为 vehicleLineOp 变量创建一个新的选项元素(使用类似于vehicleLineOp = document.createElement("option"); 的代码),否则您只是不断更新具有不同文本和值属性的相同选项元素(这就是为什么只应用最后一个文本和值正在显示)。

var vehicleLineOp;
var vehicleLineDD = document.getElementById("vehicleLineDD");
for (i = 0; i < arr.length; i++) {
    vehicleLineOp = document.createElement("option");
    vehicleLineOp.text = arr[i].code + ': ' + arr[i].desc;
    vehicleLineOp.value = arr[i].code;
    vehicleLineDD.add(vehicleLineOp);
}

编辑:这是一个可以在 IE11 和 IE8 中运行的示例:

function populate() {
  var arr = document.getElementById("input").value.split("\n");
  var vehicleLineOp;
  var vehicleLineDD = document.getElementById("vehicleLineDD");
  vehicleLineDD.innerHTML = "";
  for (var i = 0; i < arr.length; i++) {
    vehicleLineOp = document.createElement("option");
    vehicleLineOp.text = arr[i];
    vehicleLineOp.value = arr[i];
    vehicleLineDD.add(vehicleLineOp);
  }
}
var btn = document.getElementById("btnPopulate");
if (btn.addEventListener) {
  btn.addEventListener("click", populate);
} else {
  btn.attachEvent("onclick", populate);
}
Add each choice as a new line in the text area below, thn click "Populate Dropdown":<br/>
<textarea id="input" style="vertical-align:top;height:4em;">Example 1
Example 2
Example 3</textarea>
<input type="button" value="Populate Dropdown" id="btnPopulate" />
<br/>
<select id="vehicleLineDD"></select>

【讨论】:

  • 感谢 Thriggle 的回复。我已经有了 vehicleLineOp = document.createElement("option");所以我可能会像你说的那样用不同的值更新同一个位置。但它在 IE8 中运行良好。 IE11这里有代码更改吗??
  • IE8 和 IE11 之间发生了很多变化,尤其是 IE11 解释 HTML 和 JavaScript 的方式。 IE11 明显更接近 HTML 和 Ecmascript 标准;如果它的行为不同,则很可能是它的行为方式应该,并且 IE8 正在以非标准方式解释您的代码。
  • 好的,注意了。我们上面的代码是否有任何替代代码,可以在 IE11 上运行..
  • @Maharajan 我用应该在 IE8 和 IE11 中都可以工作的代码示例更新了我的答案
  • 非常感谢您的及时帮助@Thriggle 让我检查一下,它对我很有用。
猜你喜欢
  • 2023-03-08
  • 2017-08-02
  • 1970-01-01
  • 2012-12-24
  • 2019-05-28
  • 2017-07-17
  • 2013-01-07
  • 1970-01-01
相关资源
最近更新 更多