2012-01-13 121 views
7

我在我的應用程序級聯下拉,使用jquery級聯,現在我的問題是它與IE9,Firefox,Opera和Safari工作順利,但不適用於任何瀏覽器如IE7,IE8等。IndexOf不支持在IE8瀏覽器

我上網的問題,發現錯誤在我的jQuery代碼是由於的indexOf,我試了一下去除的indexOf但仍是給予同樣的錯誤..

注:有沒有什麼解決辦法在telerik腳本中刪除indexOf,因爲只有我可以在腳本中找到indexOf。

下面是代碼:

function OnClientSelectedIndexChanged(sender, eventArgs) { 
var senderId = sender.get_id().toString(); 

var uniqueName = senderId.substring(senderId.lastIndexOf('_'), senderId.length); 

if(senderId.indexOf("drpdwnCondition") > 0) 
{ 
    return false; 
} 

var selectedItem = eventArgs.get_item(); 
var selectedValue = selectedItem.get_value().split('_'); 
$.ajax({ type: "POST", async: true, 
    url: "/SalesRepresentativeMonitoring.aspx/GetData", contentType: "application/json; charset=utf-8", 
    data: "{value:" + JSON.stringify(selectedValue[1]) + "}", dataType: "json", 
    success: function (msg) { 
     var resultAsJson = msg.d // your return result is JS array 
     // Now you can loop over the array to get each object 
     var cnditionCombo = $find("ctl00_ContentPlaceHolder1_radDock_C_Filter_drpdwnCondition" + uniqueName.toString()); 
     cnditionCombo.clearSelection(); 
     cnditionCombo.trackChanges(); 
     cnditionCombo.clearItems(); 
     for (var i in resultAsJson) { 
      //alert(resultAsJson[i]); 
      var item = new Telerik.Web.UI.RadComboBoxItem(); 
      item.set_text(resultAsJson[i]); 
      item.set_value(resultAsJson[i]); 
      cnditionCombo.get_items().add(item); 
     } 
     var itemAtIndex = cnditionCombo.get_items().getItem(0); //get item in detailCB 
     itemAtIndex.select(); 
     cnditionCombo.commitChanges(); 
    } 
}); 

}

感謝你..

+1

請問您可以發佈您的代碼。 – 2012-01-13 09:08:16

+1

AFAIK,indexOf在ie7和8中運行良好。請顯示一些代碼 – Johan 2012-01-13 09:08:48

+0

@Archer他說,它在ie9中工作,而不是7 + 8 :)無論如何,它應該在所有這些工作 – Johan 2012-01-13 09:14:54

回答

26

Array S中indexOf()方法不是在IE中實現< 9.當你正在使用jQuery你可以使用$.inArray(),例如

var arr = ["foo", "bar", "baz"], 
    bazIndex = $.inArray("baz", arr), // 2 
    doesntExistIndex = $.inArray("notThere", arr); // -1 

以下是文檔:http://api.jquery.com/jQuery.inArray/

22

documentation for indexOf on MDN包含一個pollyfill,它將在不支持JavaScript 1.6的瀏覽器中添加支持。

您可以將其放入以避免重寫現有代碼。

if (!Array.prototype.indexOf) { 
    Array.prototype.indexOf = function (searchElement /*, fromIndex */) { 
     "use strict"; 
     if (this == null) { 
      throw new TypeError(); 
     } 
     var t = Object(this); 
     var len = t.length >>> 0; 
     if (len === 0) { 
      return -1; 
     } 
     var n = 0; 
     if (arguments.length > 0) { 
      n = Number(arguments[1]); 
      if (n != n) { // shortcut for verifying if it's NaN 
       n = 0; 
      } else if (n != 0 && n != Infinity && n != -Infinity) { 
       n = (n > 0 || -1) * Math.floor(Math.abs(n)); 
      } 
     } 
     if (n >= len) { 
      return -1; 
     } 
     var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0); 
     for (; k < len; k++) { 
      if (k in t && t[k] === searchElement) { 
       return k; 
      } 
     } 
     return -1; 
    } 
}