0
所以我有一个页面,有几个jQuery插件。除此之外,我还有多选工具栏,一个非常棒的插件。问题是,当我在Internet Explorer中加载页面时出现页面中断。我已经能够确定问题发生时,我尝试设置一些属性,我已经动态生成一些元素。当设置检查状态时,对象为空
这里是用于生成元素的代码:
$.ajax({
url: '@Url.Content("~")' + 'Ticket/GetTvrtke',
async: false,
success: function (data) {
document.getElementById("header_tvrtka_holder").innerHTML = data;
var tvrtke = data.split(", ");
for (var i = 0; i < tvrtke.length; i++) {
document.getElementById("KlijentMultiSelect").innerHTML +=
"<option value=\"" + tvrtke[i] + "\" id=\"" + tvrtke[i] + "\" >" + tvrtke[i] + "</option>";
}
$("#KlijentMultiSelect").multiselect({
selectedText: "",
height: 125,
minWidth: 650,
noneSelectedText: 'Izaberite željene tvrtke:'
});
}
});
的函数获得正确的数据,并生成的选项,然后我激活插件来呈现与复选框新下拉菜单。
问题是,后来我有这样的代码:
var tvrtke = document.getElementById("header_tvrtka_holder").innerHTML.split(", ");
for (var i = 0; i < tvrtke.length; i++) {
document.getElementById("ui-multiselect-" + tvrtke[i]).checked = true;
}
for (var i = 0; i < tvrtke.length; i++) {
document.getElementById("ui-multiselect-" + tvrtke[i]).setAttribute("onclick", "ChangeTextKlijent()");
}
在这里,我想设置的复选框值设置为true,并在click事件添加到输入元素,但随后的Visual Studio将我的错误来自标题的消息。在Firefox中,一切都很好,但IE是一个完全不同的故事。
有人知道如何解决这个问题吗?
在for循环中执行'document.getElementById(“KlijentMultiSelect”)。innerHTML + ='对性能不利。并非所有浏览器都支持使用innerHTML添加选项。将元素查找到循环外部。你正在使用jQuery,为什么要混合使用DOM和jQuery。选一个。 – epascarello
@epascarello Soooooooooo很多好点 – Ian
这个消息意味着document.getElementById不能找到一个id为“ui-multiselect-”+ tvrtke [i]'的元素,你能确认你真的在IE中有类似id的选项吗? –