韦德国际1946英国 > 计算机网络 > IE7中无法将其转换成伪数组

原标题:IE7中无法将其转换成伪数组

浏览次数:57 时间:2019-09-16

var ary = ['one','two','three'];
var obj = {}; // 没有length属性
Array.prototype.push.apply(obj, ary);
for(var i in obj){
alert(i ': ' obj[i]);
}

复制代码 代码如下:

临时必要将数组转成伪数组(ArrayLike),如下

get内就一个伊利运算符,即八个分支。
分段1,当不传参数时将获得具备DOM元素(调用toArray)
分支2,当num为数字(索引)时重返钦点的某贰个DOM成分(数字为负数时为逆向获取)

var ary = ['one','two','three'];
var obj = {length:0}; // 有length,值为0
Array.prototype.push.apply(obj, ary);
for(var i in obj){
alert(i ': ' obj[i]);
}

var jqObj = {0:'one',1:'two',2:'three',length:3}, // 伪数组(ArrayLike)
ary = ['one','two','three']; //数组
// 将伪数组(ArrayLike)转成数组
function jqObjToArray(json){
var slice = Array.prototype.slice;
return slice.call(json,0);
}
// 将数组转成伪数组(ArrayLike)
function ArrayToJqObj(ary){
var obj = {}, push = Array.prototype.push;
push.apply(obj,ary);
return obj;
}
console.log(jqObjToArray(jqObj));
console.log(ArrayToJqObj(ary));

var ary = ['one','two','three'];
var obj = {length:2}; // 有length,非零值
Array.prototype.push.apply(obj, ary);
for(var i in obj){
alert(i ': ' obj[i]);
}

// 方式2
$('div')[1]; // 获取页面中第三个div

IE8/9/Firefox/Safari/Chrome 依次弹出了obj的key及其value。即能更改到ArrayLike。
但IE6/7下则无法,未有出口任何音讯申明obj依旧是个空对象。
只要给obj加个length属性,情况则不一样

get: function( num ) {
return num == null ?
// Return a 'clean' array
this.toArray() :
// Return just the object
( num < 0 ? this[ this.length num ] : this[ num ] );
},

复制代码 代码如下:

看看get方法的源码

你只怕感兴趣的稿子:

  • javascript中length属性的钻探

<div id="a">A</div>
<div id="b">B</div>
<div id="c">C</div>
<div id="d">D</div>

这一次IE6/7(全部浏览器)中均弹出了key及其value,都能退换来ArrayLike
只顾,length只好赋值为0而非它值,不然获得的对象key和value就不是各个对应的了。

复制代码 代码如下:

复制代码 代码如下:

将HTMLCollection/NodeList/伪数组转变来数组
zChain-05.rar

复制代码 代码如下:

分支1实际是将jQuery对象(伪数组)转成真正的数组,分支2实际是(用中括号[])取“伪数组”成分。上边以$('div')来说述整个调用进程
1,获取页面div成分(document.getElementsByTagName('div'))
2,将集结HTMLCollection/NodeList转成真正的数组
3,将数组转成伪数组/ArrayLike(jQuery对象)
如图

$('div').toArray(); // 再次回到页面中有所的div,依次放入数组中

图片 1

$('div').first() 重回jq对象集合的第二个成分, 即Div[id=a],结构:{0:div,length:1,...};//...表示省略了别的性质
$('div').last() 重回jq对象集结的末段的要素, 即Div[id=d],结构:{0:div,length:1,...};
$('div').eq(2) 再次来到jq对象匹配的第三个要素, 即Div[id=c],结构:{0:div,length:1,...};

jQuery的$调用后想要获取DOM成分得以采用get方法,如下

相关:

本文由韦德国际1946英国发布于计算机网络,转载请注明出处:IE7中无法将其转换成伪数组

关键词:

上一篇:div失去焦点事件实现思路,DIV焦点事件详解

下一篇:没有了