2013-01-23 28 views
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是一个完全不同的故事。

有人知道如何解决这个问题吗?

+1

在for循环中执行'document.getElementById(“KlijentMultiSelect”)。innerHTML + ='对性能不利。并非所有浏览器都支持使用innerHTML添加选项。将元素查找到循环外部。你正在使用jQuery,为什么要混合使用DOM和jQuery。选一个。 – epascarello

+0

@epascarello Soooooooooo很多好点 – Ian

+0

这个消息意味着document.getElementById不能找到一个id为“ui-multiselect-”+ tvrtke [i]'的元素,你能确认你真的在IE中有类似id的选项吗? –

回答

0

我切换,使得我的代码如下所示:

var tvrtke = document.getElementById("header_tvrtka_holder").innerHTML.split(", "); 

$.each(tvrtke, function (index, value) { 
    $("#KlijentMultiSelect").append("<option value=\"" + value + "\" id=\"" + value + "\" >" + value + "</option>"); 
}); 

,现在它的工作原理。

相关问题