因为是个弱类语言.把他所有要点整理成一篇文章也应该没问题吧?
有一定C语言基础就够了
第一章:HTML和script
HTML是超文本语,它以标枪 对应开始和结束.
超文本文件中,JavaScript程序代码位于之间.
script 的type 属性值一定是 javascript/text.
如果script属性引入了Js文件,那么起始标签与结束标签之间的内容将被忽略.
例子:
alert("abc");
其中tom.js:
alert("tom file");于是对话框中,只显示的是tom file
第二章.数据类型
javascript里面不分定义类型的,只要用了var 都是定义了一个变,没有赋值时是一个Undefined类型
并且var a=20;这时是数字类型, a=true;这时又为了逻辑类型
可以使用typeof 获取类型
标识符:只能有字母,数字 _ 和 $ 这四种组成,同时开头不能是数字.
数字类型:占8字节(64位),保留16位有效数字
250(十进制) ,0250(八进制),0x250(十六进制).2.5E3(E3表示10的三次方)
NaN(无意义数字), Infinity(无穷大)
字符串类型:用一对(')或者(")的就是
注意换行符(
),制表符(),回车符().,反斜杠(),单引号('),双引号(").
可以使用+进行连接.
逻辑类型:true,false
函数:function ( ...) { ..... }
可当成变量看: 假如有function add() ... 然后var tom=add; 那么tom也是一个和add一样功能的函数
使用arguments重构:
function average()
{ if(arguments.length==1) return arguments[0]; //一个参数
if(arguments.length==2)return (arguments[0]+arguments[1])/2 ; //两个参数
....
}
对象:
首先是构造函数:比如
function Persom(xm,sf){
this.name=xm;
this.id=sf;
this.speak=function(){
docunment.writenln("我的名字是:"+this.name+"
");
}
}然后是实例化对象:var tom=new Person("汤姆猫","13254");
使用对象: tom.speak();
顺便一说object()是js里面预定义的一个对象,可以直接拿来用
第三章.运算表达式
运算符:+-×÷,没啥好说.特别注意的是 a++和++a的运算级优先级别比×÷高
关系表达式: > < =也没啥好说.特别注意的是
如果两个字符串比较,那么比的就是每个字母大小("d">"a"),如果相等,比较下一个字母
如果不同类型比较.转化为数字类型比较.其中"52"可以转化为52,但是"52a"转为为NaN,true转化为1
这里多了个严格相等(===)和不严格相等(!==),指的是不自动转化下的比较.
逻辑表达: &&与 ||或 !非 没啥好说/
位运算:
二元运算符: &按位与 . |按位或 . ^ 按位异或 .
一元运算符: ~按位取反.
移位运算符: << ,>> , >>>(只补0)
条件运算: a:b?c.
if/else , switch.
循环:for, while, do while. -------break,continue,return
其他运算:new,typeof, instanceof(判断某对象是否某类型)
第四章.字符串对象
创建
var str=new String("とある字符串");
比较
使用 == 逻辑比较字符串对象的话,比较的是引用值而不是内容本身
var str1=new String("哈哈哈!"); //建立了一个哈哈哈的对象
var str2=new String("哈哈哈!"); //再次建立了一个哈哈哈的对象,与前一个对象不同的
var boo1=(str1== str2); //boo1=false~因为两个对象不是指向同一个的比较内容本身应该使用localeCompare();
var boo2=str1.locateCompare(str2; //大于返回1,等于返回0,小于返回-1;
连接
concat() ,或者直接用 +
检索
使用charAt(); //charCodeAt();则是把检索结果转化为编码
var string =new String("SD卡路公交受得了柑橘味儿");
var ch=string.charAt(5); //ch结果是"公"
查找
使用indexOf(); 返回的是第一次找到字符串的位置,找不到返回-1
indexOf("bcd"); //表示从头开始查找
indexOf("bcd",5); //表示从第六个字母开始找
lastIndexOf( ) ; //向前查找.
获取子串
使用substring(); //小的数字为起始位置,大的数字为末位.首字下标是0.结尾不算入其中
var s=new String("123456789");
var sub=s.sub(3,6); //sub=456 , 7的下标虽然是6,但结尾不算进去
使用slice(a,b); //左边的数是起始位置右边是末位.同时负数表示从尾倒数过来.-1表示最后一个
替换
replace(); 把第一个找到的,替换成新的
var s=new String("tom@sohu.com");
var ss=s.replace("om","eacher"); //替换后s并没有改变
大小写切换:
toLowerCase(); 全部变成小写
toUpperCase();全部变成大写
与数字转换:
toString(); 数字变成字符串,默认变为10进制的.
toString(2); //变成2进制的,如 5 变成 101
toString(16); //变成16进制
parseInt(); //字符串转换为整型,可识别10,8,16进制
parseFloat(); //转化为浮点型
Number(); //转化为数字类型
以上如果转化失败都是返回NaN;
正则表达式
理解为一种自定义格式就可以~
它封装的对象是RegExp~~
元字符
. 任何字符
d 0~9任一个数字 D 非数字 s 空格类符(
,,f,) S 非空格类
w 标识符的字符 W 非标识符的字符
[ ] 表示括号内任一个 [^ ] 非括号内以外的字符
[a-e] a到e任一个 [a-zA-Z] 字母任一个
限定词:加在后面的,用来形容出现次数
? 出现0或者1
+ 至少出现一次
{n} 出现n次
{n, } 至少出现n次
{n,m} n≤出现次数≤m
* 出现任意次
例子:日期格式只能是2010-02-04或者2010/02/04
var reg =/d{4}[-*][01]d[-/][0-3]d/;
指令 g 全局匹配,不只匹配一个. i忽略大小写.
该对象有两个方法:
test() //返回bool值,看是否和格式一致,一致后并保存lastIndex值为下一个字符
exec() //返回一个字符串数组,用来查找格式一致的,查找失败后lastIndex归零.
字符串与正则的匹配:
match(); //功能和exec()一样,不同的是exec是RegExp的方法,match是字符串的方法.
search(); //返回第一个匹配的位置
replace(); //替换,如果RegExp不是全局的,就是指令没有g,那么只替换第一个.
第五章.数组对象
创建
var a=new Array(3); //一个3元素数组,如果是Array()表示0元素
var a=new Array(3,4,5) //当大于一个数时,像这个,表示创建一个3元素数组,对应3个值
var a=[5,6,2,4]; //用常量创建4元素数组
没有二维数组.不过可以通过数组的数组构造,如: a=[[1,2],[5,6,7],5,[2,5]];
赋值.
数组长度一开始只是初始定义,其长度可以随便变化.
例如a是一个2元素数组.
此时:a[2]=5; 那么他的长度自动增长.变为3了
转化
toString(); //返回字符串,将数组变成字符串,元素之间有逗号隔开
join(); //返回字符串,连接并变成字符串.例如 a.join("--"); //变成5--6--2--4
split(); //返回数组,将字符串变数组.跟上面想法.split("--")则可以将上面变为5,6,2,4
//var str="abcdefbcdabceef"; var arr=str.split("bc"); 那么arr=["a","adef","da","eef"];
添加删除
push( ); //返回数组长度,并在队尾加入新元素. push(57,69,84); 长度+3,加了三个新元素
pop(); //删除并返回队尾元素, 数组长度-1;
unshift( ); //对应跟push相似,不过是从头部一次性加入
shift(); //对应跟pop()相似, 不过是从头部删除
排序
sort(); //按照每个元素的首字符排序
sort(....); //如果里面填入函数的话按照函数的方式排序,函数是两个数比较,在后面的返回1,相等返回0,在前面的返回-1
连接
concat( [4,5,6],b ); //连起来
获取子数组
slice(2) //第三个元素直到结尾
slicee(2,5); //第3个元素到第5个元素
替换数组
splice(2,1,'a','b'); //第三个元素开始的一个元素变为'a','b',长度+1了
splice(2,0,11,12,13,14); //第三个元素开始,插入11,12,13,14
splice(2); //删除第三个元素开始到结尾的元素
splice(2,3); //删除第3个元素开始的3个元素.(可以理解为替换成空)
逆置 :reverse();
第六章.
Data
创建
new Date(); //当前系统时间
new Date(2014,8,19,12,11,11); //指定时间2014年8月19日12时11分11秒
new Date(2014,8,19); //指定时间2014年8月19日
转换
toString() ; //获得的是字符串"Tue Aug 19 12:11:11 UTC+0800 2014"
toDateString(); //Tue Aug 19 2014
toTimeString //12:11:11 UTC+0800 2014
获取和设置
getFullYear(); //setFullYear(year)
getMonth(); //setMonth(month); 其中这个0表示1月,所以月份要加1
getHours(); //setHours(hours);
getDays(); //setDays(days); 0表示星期日,1~6 星期一至6
等等
Math
取整
ceil(); //向上取整
floor(); //向下取整
round(); //四舍五入
随机
random(); //取0~1的随机小数,不包括0和1
三角函数
cos( ) , sin( ), tan( )
acos( ); asin( );atan( );
其他
max(); min();
pow(x,y); //x的y次方
exp(x); //自然常数e的x次方
sqrt (x); //x的平方
第七章.浏览器对象
window
newWindow =window.open("www.baiduc.om","windowName","top=400,lefy=200");
//第一个参数是网址,第二个参数是窗口名称,第三个参数包括位置,窗口大小,是否有工具栏,地址栏等等
//第三个参数:top,left,height,width这些填入数值.
//resizable(能否调整窗口大小),scrollbars(滚动条),toolbar(工具栏),menubar(菜单栏),status(状态栏),//location(地址栏)
//上面这些填入yes/no
newWidow.close(); //关闭窗口
moveTo(100,100); //当前窗口移动到坐标100,100
moveBy(-100,200); //平移
resizeTo(200,200); //设置大小为200,200
resizeBy(-50,200); //宽-50,高加200
对话框
window.alert(" ٩(ˊᗜˋ*)و "); //弹出消息对话框并显示内容,只有一个确定的按键
var boo1=window.confirm(" 确定要出发吗?ᕕ( ᐛ )ᕗ "); //弹出确认对话框,有确定和取消两个按键,返回TRUE和flase
var inStr=window.prompt("请输入角色名", " "); //返回字符串,第一个参数是提示文字,第二个参数是输入的地方
定时器
var aa=setTimeout("alert('sdfkafs')" , 2000); //2秒后弹出sdfkafs
clearTimeout(aa); //取消aa的对象,2秒后不弹出了
var ra=setInterval("alert('sdfkafs')" , 2000); //每2秒循环弹出sdfkafs
clearInterval(ra); //取消ra的循环计时器
检查浏览器信息
class navigator{
appName; //浏览器名称
appVersion; //浏览器版本号
userAgent; //浏览器信息,通常用这个就够了
platform; //运行平台
} 其余不详细说了.
窗口与框架
创建了三层的框架,rows水平高度...表示第一个框架高150,第二个高250,剩余的是第三个的cols表示垂直高度,如cols="20%,80%"; 左边20%宽,右边80%宽
页面导航
location{
hostname; //URL服务器名字href; //URL信息,最常用,基本就是表示一个连接host; //服务请名字和端口hash; //URL中#后面的内容port; //端口号pathname; //路径信息search; //查询字符串,一般为?开头protocol; //协议assign();replace();}
history{
back(); //后退一页forward(); //前进一页go( ..); //go(4)表示前进4页,跳转到某一页}
sceen{
height;width;availHeight;availWidth;colorDepth;}
第八章.HTML对象
1.获取对象
getElementById();
id是唯一标识的,所以只能获得一个对象.例如:
var str=document.getElementById("asdasd");
getElementsByName();
这个只有名字相同,都获取.
var arr=document.getElementsByName("number"); //arr=[对象1,对象2,对象3]
getElemntsByTagName();
这个范围更大.
var arr=document.getElementsByName("input"); //arr=[对象1,对象2,对象3]
2.获取对象的某个值
getAttribute(...);
var a=getAttribute("name"); //a=number
var b=getAttribute("value"); //b=30
setAttribute(......);
arr.setAttribute("value","40"); //这是arr的value值是40
3.写成HTML文档格式
创建标记
var ulObj= document.createElement(" ul "); //创建了一个
添加内容
var obj1= document.createElement(" li "); //创建了一个
obj1.innerText("火龙果"); //现在是
火龙果ulObj.appendChild(obj1); //把上面的li放进上面的ul里面了
删除标记
ulObj.removeChild(obj1); //删除
表格
hey,hey | start |
.rows[1]
; //获取了第一行
var cellObj=rowObj.cells[3]; //获取了第一行的第三格
使用cellObj.innerHTML; 表示单元格的数据
var rowObj=tableObj,insertRow(3); //在第三行位置插入新一行
var cellObj1=rowObj.insertCell(0); //在前面插入单元格
第九章.表单元素
表单就是用来提交的,和服务器系统进行交互的信息
之间用户ID:
上面是一个表单,名字是login,里面写着"用户ID:",接着的是一个输入文本.然后后面是一个写着提交的提交按钮如果有onsubmit的话,在点了提交按钮时,他会将执行onsubmit的函数进行验证.
获取form对象有几种方法
var formObj=document.forms["login"]; //通过表单的名字获取
var formObj=document.login; //通过名字获取
var formObj=document.forms[0]; //因为他是第一个表单
同样,获取数据对象有几种方法
var textObj=formObj.elements["user-id"]; //通过名字获取
var textObj=formObj.elements[0]; //因为他是第一个表单
按钮
添加处理点击事件的方法有几种:
①
②btObj.οnclick=compute;
③btObj.οnclick=function(){
//....
}
文本
文本区啦啦啦啦啦 4行10列
文本框 最大显示10,最大输入20个
密码框 将显示是******
他们的属性有
value :文本内容
disabled 是否被禁用
readonly 是否只读
方法:select(); 选中所有文本,比如说获取焦点时使用
focus(); 设置获取焦点
focus="compute"; 获取焦点时执行compute();
onblur =function(); 失去焦点时执行function();通常注册时经常用来检查是否正确输入
复选框
单选按钮(名字相同为同一组)
他们也可以设置onclick;
下拉列表
苹果
香蕉
optionObj.value="orange";
optionObj.text="橙";
listObj.add(optionObj) ;remove(index); //删除位置为index的项目
onchange //选择发生变化时
属性
value;
text;
index; //列表中的位置
selected; //是否被选中返回true ,flase