js字符串函数
字符串(String)
1.声明
var myString = new
String("Every good boy does fine.");
var myString = "Every
good boy does fine.";
2.字符串连接
var myString =
"Every " + "good boy " + "does fine.";
var myString =
"Every "; myString += "good boy does fine.";
3.截取字符串
//截取第 6 位开始的字符
var myString
= "Every good boy does fine.";
var section =
myString.substring(6); //结果: "good boy does
fine."
//截取第 0 位开始至第 10
位为止的字符
var myString = "Every good boy does
fine.";
var section = myString.substring(0,10); //结果:
"Every good"
//截取从第 11 位到倒数第 6
位为止的字符
var myString = "Every good boy does
fine.";
var section =
myString.slice(11,-6); //结果: "boy
does"
//从第 6 位开始截取长度为 4
的字符
var myString = "Every good boy does
fine.";
var section =
myString.substr(6,4); //结果: "good"
4.转换大小写
var myString = "Hello";
var
lcString = myString.toLowerCase(); //结果: "hello"
var
ucString = myString.toUpperCase(); //结果: "HELLO"
5.字符串比较
var aString = "Hello!";
var
bString = new String("Hello!");
if( aString == "Hello!" ){
} //结果: true
if( aString == bString ){
} //结果: true
if( aString ===
bString ){ } //结果: false (两个对象不同,尽管它们的值相同)
6.检索字符串
var myString = "hello
everybody.";
//
如果检索不到会返回-1,检索到的话返回在该串中的起始位置
if( myString.indexOf("every")
> -1 ){ } //结果: true
7.查找替换字符串
var
myString = "I is your father.";
var result =
myString.replace("is","am"); //结果: "I am your father."
8.特殊字符:
\b :
后退符 \t :
水平制表符
\n :
换行符 \v :
垂直制表符
\f :
分页符 \r :
回车符
\" :
双引号 \' :
单引号
\\ : 反斜杆
9.将字符转换成Unicode编码
var myString =
"hello";
var code = myString.charCodeAt(3);
//返回"l"的Unicode编码(整型)
var char = (66);
//返回Unicode为66的字符
10.将字符串转换成URL编码
var
myString = "hello all";
var code =
encodeURI(myString); //结果: "hello
all"
var str =
decodeURI(code); //结果:
"hello all"
//相应的还有: encodeURIComponent()
decodeURIComponent()
11.将字符串转换成base64编码
//
base64Encode() base64Decode()
用法同上
//-----------------------------------------------------------------------
·数字型(Number)
1.声明
var i = 1;
var i = new
Number(1);
2.字符串与数字间的转换
var i =
1;
var str = i.toString(); //结果:
"1"
var str = new String(i); //结果:
"1"
i =
parseInt(str); //结果:
1
i =
parseFloat(str); //结果:
1.0
//注意:
parseInt,parseFloat会把一个类似于"32G"的字符串,强制转换成32
3.判断是否为有效的数字
var i = 123; var str =
"string";
if( typeof i == "number" ){ }
//true
//某些方法(如:parseInt,parseFloat)会返回一个特殊的值NaN(Not a Number)
//请注意第2点中的[注意],此方法不完全适合判断一个字符串是否是数字型!!
i =
parseInt(str);
if( isNaN(i) ){
}
4.数字型比较
//此知识与[字符串比较]相同
5.小数转整数
var f =
1.5;
var i = Math.round(f); //结果:2
(四舍五入)
var i = Math.ceil(f); //结果:2
(返回大于f的最小整数)
var i = Math.floor(f); //结果:1
(返回小于f的最大整数)
6.格式化显示数字
var i =
3.14159;
//格式化为两位小数的浮点数
var str =
i.toFixed(2); //结果:
"3.14"
//格式化为五位数字的浮点数(从左到右五位数字,不够补零)
var str = i.toPrecision(5);
//结果: "3.1415"
7.X进制数字的转换
//不是很懂
-.-
var i = parseInt("0x1f",16);
var
i = parseInt(i,10);
var i =
parseInt("11010011",2);
8.随机数
//返回0-1之间的任意小数
var rnd =
Math.random();
//返回0-n之间的任意整数(不包括n)
var rnd =
Math.floor(Math.random() *
n)
//-----------------------------------------------------------------------
·Math对象
1. Math.abs(num) : 返回num的绝对值
2. Math.acos(num) : 返回num的反余弦值
3. Math.asin(num) : 返回num的反正弦值
4. Math.atan(num) :
返回num的反正切值
5. Math.atan2(y,x) : 返回y除以x的商的反正切值
6.
Math.ceil(num) : 返回大于num的最小整数
7. Math.cos(num) : 返回num的余弦值
8. Math.exp(x) : 返回以自然数为底,x次幂的数
9. Math.floor(num) :
返回小于num的最大整数
10.Math.log(num) : 返回num的自然对数
11.Math.max(num1,num2) : 返回num1和num2中较大的一个
12.Math.min(num1,num2) :
返回num1和num2中较小的一个
13.Math.pow(x,y) : 返回x的y次方的值
14.Math.random() : 返回0到1之间的一个随机数
15.Math.round(num) :
返回num四舍五入后的值
16.Math.sin(num) : 返回num的正弦值
17.Math.sqrt(num)
: 返回num的平方根
18.Math.tan(num) : 返回num的正切值
19.Math.E :
自然数(2.718281828459045)
20.Math.LN2 :
2的自然对数(0.6931471805599453)
21.Math.LN10 :
10的自然对数(2.302585092994046)
22.Math.LOG2E : log 2
为底的自然数(1.4426950408889634)
23.Math.LOG10E : log 10
为底的自然数(0.4342944819032518)
24.Math.PI : π(3.141592653589793)
25.Math.SQRT1_2 : 1/2的平方根(0.7071067811865476)
26.Math.SQRT2 :
2的平方根(1.4142135623730951)
//-----------------------------------------------------------------------
·日期型(Date)
1.声明
var myDate = new Date();
//系统当前时间
var myDate = new Date(yyyy,
mm, dd, hh, mm, ss);
var myDate = new Date(yyyy, mm,
dd);
var myDate = new Date("monthName dd, yyyy
hh:mm:ss");
var myDate = new Date("monthName dd,
yyyy");
var myDate = new
Date(epochMilliseconds);
2.获取时间的某部份
var
myDate = new Date();
myDate.getYear();
//获取当前年份(2位)
myDate.getFullYear();
//获取完整的年份(4位,1970-????)
myDate.getMonth();
//获取当前月份(0-11,0代表1月)
myDate.getDate();
//获取当前日(1-31)
myDate.getDay();
//获取当前星期X(0-6,0代表星期天)
myDate.getTime();
//获取当前时间(从1970.1.1开始的毫秒数)
myDate.getHours();
//获取当前小时数(0-23)
myDate.getMinutes();
//获取当前分钟数(0-59)
myDate.getSeconds();
//获取当前秒数(0-59)
myDate.getMilliseconds();
//获取当前毫秒数(0-999)
myDate.toLocaleDateString(); //获取当前日期
myDate.toLocaleTimeString(); //获取当前时间
myDate.toLocaleString( );
//获取日期与时间
3.计算之前或未来的时间
var myDate = new
Date();
myDate.setDate(myDate.getDate() + 10);
//当前时间加10天
//类似的方法都基本相同,以set开头,具体参考第2点
4.计算两个日期的偏移量
var i = daysBetween(beginDate,endDate);
//返回天数
var i = beginDate.getTimezoneOffset(endDate);
//返回分钟数
5.检查有效日期
//checkDate()
只允许"mm-dd-yyyy"或"mm/dd/yyyy"两种格式的日期
if(
checkDate("2006-01-01") ){ }
//正则表达式(自己写的检查 yyyy-mm-dd, yy-mm-dd, yyyy/mm/dd, yy/mm/dd
四种)
var r =
/^(\d{2}|\d{4})[\/-]\d{1,2}[\/-]\d{1,2}$/;
if( r.test(
myString ) ){
}
//-----------------------------------------------------------------------
·数组(Array)
1.声明
var arr = new Array();
//声明一个空数组
var arr = new Array(10);
//声明一个10个长度的数组
var arr = new Array("Alice", "Fred",
"Jean"); //用值初始化数组
var arr = ["Alice", "Fred",
"Jean"]; //用值初始化数组
var arr =
[["A","B","C"][1,2,3]]; //声明一个二(多)维数组
2.数组的访问
arr[0] = "123";
//赋值
var str = arr[0];
//获取
arr[0][0] = "123"; //多维数组赋值
3.数组与字符串间的转换
var arr =
["A","B","C","D"];
//声明
//数组按分隔符转换成字符串
var str =
arr.join("|"); //结果:
"A|B|C|D"
//字符串切割成数组
arr = str.split("|");
4.遍历数组
for( var i=0; i<arr.length; i++ ){
alert(arr[i]); }
5.排序
var arr =
[12,15,8,9];
arr.sort(); //结果: 8 9 12 15
6.组合与分解数组
var arr1 =
["A","B","C","D"];
var arr2 =
["1","2","3","4"];
//奖两个数组组合成一个新的数组
var arr =
arr1.concat(arr2); //结果:
["A","B","C","D","1","2","3","4"]
//将一个数组切成两个数组(参数1:起始索引,参数2:切割长度)
var arr3 =
arr.splice(1,3); //结果: arr3:["B","C","D"]
arr["A","1","2","3","4"]
//将一个数组切成两个数组,并在原数组补新值
var arr4 =
arr.splice(1,3,"AA"); //结果: arr4:["B","C","D"]
arr["A","AA","1","2","3","4"]
//-----------------------------------------------------------------------
·自定义对象
1.声明:
function
myUser(uid,pwd){
this.uid =
uid;
this.pwd = pwd || "000000";
//默认值
this.show =
showInfo; //方法
}
//下面的函数不是自定义对象,是自定义对象的方法.继续看下去就明白了
function
showInfo(){
alert("用户名:" +
this.uid + ",密码:" + this.pwd)
}
2.实例化:
var user = new
myUser("user","123456");
var user =
{uid:"user",pwd:"123456"};
3.获取与设置
alert("用户名是:" + user.uid); //get
user.uid =
"newuser";
//set
user.show();
//调用show()方法
//-----------------------------------------------------------------------
·变量
函数 流程控制
1.变量
var i = 1;
var i = 1, str = "hello";
2.函数
function
funName(){
//do
something.
}
function
funName(param1[,paramX]){
//do
something.
}
3.嵌套函数
//某种情况,你需要创建一个函数本身所独有的函数.
function
myFunction(){
//do
something.
privateFunction();
function
privateFunction(){
//do something.
}
}
4.匿名函数
var tmp =
function(){ alert("only test."); }
tmp();
5.延迟函数调用
var tId = setTimeout("myFun()",1000);
//延迟1000毫秒后再调用myFun()函数
fucntion
myFun(){
//do
something
clearTimeout(tId);
//销毁对象
}
6.流程控制
if(
condition ){ }
if( condition ){ } else{
}
if( condition ){ } else if( condition ){ } else{
}
switch( expression
){
case valA : statement;
break;
case valB : statement;
break;
default : statement;
break;
}
7.异常捕获
try{
expression } catch(e){ } finally{ }
//不处理任何异常
window.onerror =
doNothing;
function doNothing(){ return true;
}
//异常类可用的属性
description : 异常描述(IE,NN)
fileName :
异常页面URI(NN)
lineNumber :
异常行数(NN)
message :
异常描述(IE,NN)
name
: 错误类型(IE,NN)
number :
错误代码(IE)
//错误信息(兼容所有浏览器)
try{ }
catch(e){
var msg = (e.message) ?
e.message : e.description;
alert(msg);
}
8.加快脚本的执行速度
-避免使用 eval_r() 函数
-避免使用
with 关键字
-将重复的表达式赋值精简到最小
-在较大的对象中使用索引来查找数组
-减少 document.write()
的使用
//-----------------------------------------------------------------------
·浏览器特征(
navigator )
1.浏览器名称
//IE : "Microsoft Internet
Explorer"
//NS : "Netscape"
var
browserName = navigator.appName;
2.浏览器版本
bar
browserVersion = navigator.appVersion;
3.客户端操作系统
var isWin = ( navigator.userAgent.indexOf("Win")
!= -1 );
var isMac = ( navigator.userAgent.indexOf("Mac")
!= -1 );
var isUnix = ( navigator.userAgent.indexOf("X11")
!= -1 );
4.判断是否支持某对象,方法,属性
//当一个对象,方法,属性未定义时会返回undefined或null等,这些特殊值都是false
if(
document.images ){ }
if( document.getElementByIdx_x ){
}
5.检查浏览器当前语言
if( navigator.userLanguage ){
var l = navigator.userLanguage.toUpperCase(); }
6.检查浏览器是否支持Cookies
if( navigator.cookieEnabled ){
}
//-----------------------------------------------------------------------
·控制浏览器窗口(
window )
1.设置浏览器的大小
window.resizeTo(800,
600); //将浏览器调整到800X600大小
window.resizeBy(50,
-10); //在原有大小上改变增大或减小窗口大小
2.调整浏览器的位置
window.moveTo(10,
20); //将浏览器的位置定位到X:10 Y:20
window.moveBy(0, 10);
//在原有位置上移动位置(偏移量)
3.创建一个新的窗口
var win =
window.open("about.htm","winName","height=300,width=400");
//参数
alwaysLowered
//始终在其它浏览器窗口的后面(NN)
alwaysRaised
//始终在其它浏览器窗口的前面(NN)
channelMode
//是否为导航模式(IE)
copyhistory
//复制历史记录至新开的窗口(NN)
dependent
//新窗口随打开它的主窗口关闭而关闭(NN)
fullscreen
//全屏模式(所有相关的工具栏都没有)(IE)
location
//是否显示地址栏(NN,IE)
menubar
//是否显示菜单栏(NN,IE)
scrollbars
//是否显示滚动条(NN,IE)
status
//是否显示状态栏(NN,IE)
toolbar
//是否显示工具栏(NN,IE)
directories
//是否显示链接栏(NN,IE)
titlebar
//是否显示标题栏(NN)
hotkeys
//显示菜单快捷键(NN)
innerHeight
//内容区域的高度(NN)
innerWidth
//内容区域的宽度(NN)
resizable
//是否可以调整大小(NN,IE)
top
//窗口距离桌面上边界的大小(NN,IE)
left
//窗口距离桌面左边界的大小(NN,IE)
height
//窗口高度(NN,IE)
width
//浏览器的宽度
4.与新窗口通讯
win.focus();
//让新窗口获得焦点
win.document.write("abc");
//在新窗口上操作
win.document.close();
//结束流操作
opener.close();
5.模式窗口
window.showModalDialog("test.htm",dialogArgs,"param");
//传递对象
window.showModelessDialog("test.htm",myFunction,"param");
//传递函数
window.dialogArguments
//对话框访问父窗口传递过来的对象
window.returnValue
//父窗口获取对话框返回的值
//参数
center
//窗口居中屏幕
dialogHeight
//窗口高度
dialogWidth
//窗口宽度
dialogTop
//窗口距离屏幕的上边距
dialogLeft
//窗口距离屏幕的左边距
edge
//边框风格(raised|sunken)
help
//显示帮助按钮
resizable
//是否可以改变窗口大小
status
//是否显示状态栏
//例子
<script>
function
openDialog(myForm)
{
var
result =
window.showModalDialog("new.html",myForm,"center");
}
</script>
<form
action="#" onsubmit="return
false">
<input type="text"
id="txtId">
<input
type="button" id="btnChk" value="验证是否可用"
onclick="openDialog(this.form);">
</form>
//另一个页面new.html
<script>
window.dialogArguments.btnChk.enabled = false;
//将父窗口中的按钮设置为不可用
//do something to
check the Id.
window.write("用户ID:
" + window.dialogArguments.txtId.value + " 可使用!");
//获取文本框的值
</script>
//-----------------------------------------------------------------------
·管理框架网页(
frames )
1.创建一个框架架构网页
<html>
<frameset rows="50,
*">
<frame name="header"
src="header.html">
<frame
name="main" src="main.html">
</frameset>
</html>
2.访问框架网页
window.frames[i]
window.frames["frameName"]
window.frameName
window.frames["frameName"].frames["frameName2"]
parent.frames["frameName"]
top.frames["frameName"]
3.将某一页面定向到某框架
<a
href="new.html" target="main">
location =
"new.html";
parent.frameName.location.href =
"new.html";
top.frameName.location =
"new.html";
4.强制不让其它框架引用某页面
if (top != self)
{
top.location.href =
location.href;
}
5.更改框架的大小
document.framesetName.rows =
"50,*";
document.framesetName.cols = "50,*";
6.动态创建框架网页
var frag = document.createDocumentFragment(
);
var newFrame=
document.createElement_x("frame");
newFrame.id =
"header";
newFrame.name = "header";
newFrame.src="header.html"
frag.appendChild(newFrame);
newFrame =
document.createElement_x("frame");
newFrame.id =
"main";
newFrame.name = "main";
newFrame.src="main.html"
frag.appendChild(newFrame);
document.getElementByIdx_x("masterFrameset").rows = "50,*";