数组的使用
定义
var arr=[12,9,8];
var arr=new Array(12,9,8);
没有任何区别,[]的性能略高,因为代码短
数组的属性
length
既可以获取,又可以设置
例子:快速清除数组
数组的使用原则:数组中应该只存一种类型的变量
实例:同一个函数既可以获取行间样式,又可以设置行间样式
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<style>
</style>
<script>
function css()
{
if(arguments.length==2)
{
return arguments[0].style[arguments[1]];
}
else
{
arguments[0].style[arguments[1]]=arguments[2];
};
}
window.οnlοad=function()
{
var oDiv=document.getElementById('div1');
/*alert(css(oDiv,'width'));*/
css (oDiv,'background','green');
};
</script>
</head>
<body>
<div id="div1" style="width:200px;height:200px;background:red;">
</div>
</body>
</html>
function css()
{ if(arguments.length==2)
{
return arguments[0].style[arguments[1]];
}
else
{
arguments[0].style[arguments[1]]=arguments[2];
};
}
参量的等价变换:
function css(obj,name,value)
{
if(arguments.length==2)
{
return obj.style[name];
}
else
{
obj.style[name]=value;
};
}
提取非行间样式
获取非行间样式(不能用来设置)
obj.currentStyle[attr]
getComputedStyle(obj,false)[attr]
currentStyle只能取单一样式,譬如background-color,但是不能提取复合样式,譬如:background。
JS第二定律:但凡好东西,一定不兼容。
实例一:currentStyle获取非行间样式
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<style>
#div1{
width:200px;height:200px;background:red;
}
</style>
<script>
window.οnlοad=function()
{
var oDiv=document.getElementById('div1');
alert(oDiv.currentStyle.width);
}
</script>
</head>
<body>
<div id="div1">
</div>
</body>
</html>
currentStyle只兼容IE浏览器
getComputedStyle 兼容火狐、chrome浏览器,不兼容IE浏览器
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<style>
#div1{
width:200px;height:200px;background:red;
}
</style>
<script>
window.οnlοad=function()
{
var oDiv=document.getElementById('div1');
<!-- alert(oDiv.currentStyle.width);//IE-->
<!-- alert(getComputedStyle(oDiv,false).width);//chrome、firefox-->
if(oDiv.currentStyle)
//IE
{
alert(oDiv.currentStyle.width);
}
else
//Firefox、chrome
{
alert(getComputedStyle(oDiv,false).width);
}
}
</script>
</head>
<body>
<div id="div1">
</div>
</body>
</html>
封装一个调用当前样式的函数:
function getStyle(obj,name)
{
if(obj.currentStyle)
{
return obj.currentStyle[name];
}
else
{
return getComputedStyle(obj,false)[name];
}
}
window.οnlοad=function()
{
var oDiv=document.getElementById('div1');
alert(getStyle(oDiv,'width'));
}
数组
数组的定义方法:
var a=new Array(1,2,3);
var a=[1,2,3];
数组的length的bug
var arr=[1,2,3,4,5,6];
alert(arr.length)//6
length即可以获取,又可以设置;
例子,快速清空数组
添加删除元素
push(元素) 尾部添加
pop() 尾部删除
shift() 头部删除
unshift(元素)头部添加
插入、删除
splice
splice(起点,长度,元素……)
push(元素)
var arr=[1,2,3,4,5,6];
arr.push(4);
alert(arr);//1,2,3,4
pop()
var arr=[1,2,3,4,5,6];
arr.pop();
alert(arr);//1,2
splice()
var arr=[1,2,3,4,5,6];
//删除:splice(起点,长度)
arr.splice(2,3);
alert(arr);//1,5,6
var arr=[1,2,3,4,5,6];
//插入:splice(起点,长度,元素……)
arr.splice(2,0,'a','b','c','d');
alert(arr);//1,2,a,b,c,d,3,4,5,6
排序与转换
sort([比较函数]),排序一个数组
排序一个字符串数组
排序一个数字数组
转换类
concat(数组2)
链接两个数组
join(分隔符)
用分隔符,组合数组元素,生成字符串
字符串split
concat()
var a=[1,2,3];
var b=[4,5,6];
//alert(a.concat(b));//1,2,3,4,5,6
alert(b.concat(a));//4,5,6,1,2,3
join()
var a=[1,2,3,4,5,6];
alert(a.join('-')); //1-2-3-4-5-6
sort()为字符串排序
var arr=['float','width','height','background','alpha'];
arr.sort();
alert(arr);//alpha,background,float,height,width
sort()排列数字大小
var arr=[128,99,2,19,27,36];
arr.sort(function (n1,n2)
{
return n1-n2;
/* if(n1<n2)
{
return -1;
}
else if(n1>n2)
{
return 1;
}
else
{
return 0;
}*/
});
alert(arr);
split()
var str="How are you doing today?"
//切割:split(切割点(必填), 切割数组的最大长度(可选))
document.write(str.split(" ")) //这里引号里的是空格,返回内容为How,are,you,doing,today?
sort()函数比较数字排序的函数是如何比较的,还是不太理解?