No support for indexOf in IE 8?
本问题已经有最佳答案,请猛点这里访问。
我有一个需求,在这个需求中,我根据JSON响应动态地创建单选按钮。到目前为止,我在chrome和firefox上做了些什么,但在
我的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | $("#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/>'); }); |
更新
以下是IE8不支持的各种功能代码的列表
更新这里的问题是什么,对于它给我的每一个值,我都使用sudhir给出的代码。
埃多克斯1〔3〕
截图
。
更新
到了这里,问题出在
IE版本<9没有
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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; }; } |
号
1 2 3 4 | var subItem = []; subItem[1]="CSMTestPWXListinerService,CSMTestPWXListinerService_ManualyAdded"; console.log(subItem[1].indexOf(",")); //returns 25 |
根据http://msdn.microsoft.com/en-us/library/ie/53xtt423(v=vs.94).aspx
微软已经说过它也支持indexof()到ie8!
如果你改为这样做会怎么样?:
1 | if(temp.indexOf(",") >= 0) |
我知道我曾经遇到过这样的情况:当从数组引用而不是从该数组位置的内容创建的变量时,它似乎不理解对象类型是什么。这种情况是没有道理的,但我以前把它当作解决问题的方法。