No support for indexOf in IE 8?
Solution 1
IE versions < 9 don't have indexOf
, so you can add your own:
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function (elt /*, from*/) {
var len = this.length >>> 0;
var from = Number(arguments[1]) || 0;
from = (from < 0) ? Math.ceil(from) : Math.floor(from);
if (from < 0) from += len;
for (; from < len; from++) {
if (from in this && this[from] === elt) return from;
}
return -1;
};
}
var subItem = [];
subItem[1]="CSMTestPWXListinerService,CSMTestPWXListinerService_ManualyAdded";
console.log(subItem[1].indexOf(","));
//returns 25
Solution 2
According to http://msdn.microsoft.com/en-us/library/ie/53xtt423(v=vs.94).aspx
MS has said that it support indexof() to IE8 as well!
AabinGunz
Quiet and fun loving, here to learn and share. :) SOreadytohelp Got to share some amazing things. Thanks SO.
Updated on June 09, 2022Comments
-
AabinGunz almost 2 years
I have a requirement where I create radio buttons dynamically based upon JSON response. So far what I did works in Chrome and firefox, but gives
Object doesn't support this property or method
onif(subItem[1].indexOf(",") >= 0)
lineMy code
$("#sList").live("change", function(){ var currentService=this.value; var c1Svc=[]; var c2Svc=[]; if(absP.length==2) { $.each(compareServiceData,function(i,item){ if(currentService==item[0]) { var configCount=0; $.each(item[1],function(j,subItem){ var temp=subItem[1]; /*The JSON response contains List of Lists, so here if it contains a list it will be separated by "," so split it and store in a array, else directly store in a array*/ if(subItem[1].indexOf(",") >= 0) { var tList=temp.split(","); $.each(tList,function(k,val){ if(configCount==0) { c1Svc.push(val); } else { c2Svc.push(val); } }); } else { if(configCount==0) { c1Svc.push(subItem[1]); } else { c2Svc.push(subItem[1]); } } configCount++; }); } }); if ($("#customServiceListing").length == 0) { $("#compareContent").append('<table id="customServiceListing" align="center" width="90%" class="csm-table" border="1"><tbody><tr><td><form id="c1Service"></form></td><td><form id="c2Service"></form></td></tr></tbody></table>'); } else { $('#c1Service').empty(); $('#c2Service').empty(); } } else { $("#compareContent").append('<table align="center" width="90%" class="csm-table" border="1"><tbody><tr><td><form><select id="c1Service"></select></form></td><td><select id="c2Service"></select></td><td><select id="c3Service"></select></td></tr></tbody></table>'); } /*adding service radios to config1*/ $.each(c1Svc,function(i,item){ $("#c1Service").append('<input type="radio" name="customConfig1ServiceNames" id="'+item+'" value="'+i+1+'"/>'+item); }); if(c1Svc.length>1) $("#c1Service").append('<br/>'); /*adding service radios to config2*/ $.each(c2Svc,function(i,item){ $("#c2Service").append('<input type="radio" name="customConfig2ServiceNames" id="'+item+'" value="'+i+1+'"/>'+item); }); if(c2Svc.length>1) $("#c2Service").append('<br/>'); });
Update
Here is a List of various function code not supported by IE8
Update What is the problem here, for every value it gives me
-1
I am using code given by Sudhiralert(subItem[1].indexOf(",")+", "+subItem[1]);
Screenshot
Update
Got it here,
var temp=subItem[1].toString();
was the problem, converting it to String worked.