javascript函数用法(语法)

字符串(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 doesfine.";

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 = newNumber(1);

2.字符串与数字间的转换
var i =1;
var str =i.toString();    //结果: "1"
var str =newString(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 =newArray();     //声明一个空数组
var arr =newArray(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( vari=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.声明:
functionmyUser(uid,pwd){
    this.uid = uid;
    this.pwd = pwd || "000000"; //默认值
    this.show =showInfo;      //方法
}

//下面的函数不是自定义对象,是自定义对象的方法.继续看下去就明白了
functionshowInfo(){
    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.函数
functionfunName(){
//do something.
}
functionfunName(param1[,paramX]){
//do something.
}

3.嵌套函数
//某种情况,你需要创建一个函数本身所独有的函数.
functionmyFunction(){
    //do something.
    privateFunction();
    function privateFunction(){
    //do something.
    }
}

4.匿名函数
var tmp =function(){ alert("only test."); }
tmp();

5.延迟函数调用
var tId =setTimeout("myFun()",1000);  //延迟1000毫秒后再调用myFun()函数
fucntionmyFun(){
    //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;
functiondoNothing(){ 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"
varbrowserName = navigator.appName;

2.浏览器版本
barbrowserVersion = 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="#" οnsubmit="returnfalse">
    <input type="text" id="txtId">
    <input type="button" id="btnChk" value="验证是否可用"οnclick="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( );
varnewFrame= 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,*";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值