IE8下不识别indexOf的问题

1、为Array原型添加indexOf方法(如果学过面向对象,相当于给Array类添加实例方法),方法体如下:

//添加数组IndexOf方法
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;
  };
}

2、使用jQuery的inArray方法,注:jQuery版本2.0以上不再支持IE8

var arr = [ 1, "2", false, "aaa" ];
jQuery.inArray("aaa", arr);
jQuery.inArray(false, arr);
jQuery.inArray("2", arr);
jQuery.inArray(1, arr, 2); 

不存在就为-1;

时间: 2024-07-30 23:55:16

IE8下不识别indexOf的问题的相关文章

ie8下数组不支持indexOf方法解决方法

if (!Array.prototype.indexOf){ Array.prototype.indexOf = function(elt){ var len = this.length >>> 0;//调用的时候,this 不一定是 Array的原型,length不能得到保证,加上位运算后,可以将不确定的值转换成Number. var from = Number(arguments[1]) || 0;//arguments:存放参数的对象,详见:https://blog.csdn.ne

IE8下Jquery获取select选中的值的问题

我们一般使用jquery获取select时,一般这么用: <select id='a'>     <option selected='selected' value='1'> </select> var selectedValue = $("#a").val(); 在非IE8下,selectedValue的值为"1",typeof selectedValue 为"string". 在IE8下,selectedV

input 的 placeholder属性在IE8下的兼容处理

placeholder是input标签的新属性,在使用的时候有两个问题: 1.IE8 下不兼容 处理思路: 如果浏览器不识别placeholder属性,给input添加类名placeholder,模仿placeholder属性的样式,并给input 的value赋值placeholder属性的值 2. input的type属性是password的情况,用上面的方法处理提示语为密码文 处理思路: 新添加一个标签,模仿placeholder属性 直接上代码: css部分: 1 .input-item

ie8下使用knockoutjs遇到的一个模板异常

ViewModel中有一个数组,代码大概如下: function ReportViewModel(){ var self = this; self.extendedProperties = ko.observableArray([]); ... } 在从服务端获取到数据之后,使用下面的代码更新模型: for (var index in json.extendProperties) { reportViewModel.extendedProperties.push(extendProperties

js Array ie下不支持indexOf方法解决方案

在IE8下,js数组没有indexOf方法. 下面是我找到的解决办法: 在使用indexOf方法前,执行一下下面的js, 原理就是如果发现数组没有indexOf方法,会添加上这个方法. if (!Array.prototype.indexOf){  Array.prototype.indexOf = function(elt /*, from*/)  {    var len = this.length >>> 0; var from = Number(arguments[1]) ||

bootstrap在ie8下,兼容媒体查询

最近使用bootstrap做网站的时候发现,在ie8下的媒体查询一直失效: 后来解决了,做如下记录: 1.必须运行在服务器下 2.hack 条件语法,如下: <!--[if lte ie 9]> <script src="js/html5shiv.min.js"></script> <script src="js/respond.min.js"></script> <![endif]--> 这样

ie8下a标签中的图片出现边框

1.ie8下a标签中的图片出现边框 <a href="#"><img src="horse.jpg"></a> 效果如图所示 2.解决方案 将img的边框设置为0或none img{border:none;}

input输入框的border-radius属性在IE8下的完美兼容

在工作中我们发现搜索框大部分都是有圆角的,为此作为经验不足的前端人员很容易就想到,给input标签添加border-radius属性不就解决了嘛.不错方法确实是这样,但是不要忘了border-radius是css3属性,IE8不兼容!!!那么问题来了,怎样在IE8下完美兼容呢? 网上有很多关于css3属性在IE8下兼容的方法,需要引入PIE.htc这个文件,相信很容易搜到并下载该文件,但是用上position:relative;behavoior:url(PIE.htc);后发现圆角是实现了,但

Jquery ajax传递xml方式在ie8下兼容问题

要写的东西是一个工作日志页面,要求不能分页,一天写入一条数据.考虑到服务器的性能问题,使用一次性全从数据库中读出数据在方法,如果时间长了,页面在加载的时候会很慢,而且会造成浪费.所以我采用ajax技术,一次读3条数据,随着滚动条滑动加载.这样就能很好的降低服务器的压力,虽然项目不大. 项目提交的时候才发现,我写的工作日志页面居然在ie8下不能正常显示.按理来说,Jquery应该已经帮我解决了ajax创建xmlDOM时的兼容性的问题,仔细排查了以后发现是ie8对xml解析的问题. 找了资料后解决办