javaScript的基础学习

1,基础介绍:
可以放在html的head中或者是body中, 必学放在<script></script>标签中。
JScript 是一种解释型的、基于对象的脚本语言。

JavaScript能做什么?

1.增强页面动态效果(如:下拉菜单、图片轮播、信息滚动等)

2.实现页面与用户之间的实时、动态交互(如:用户注册、登陆验证等)

2,基本的语法:
  • javaScript语句向浏览器发出命令,告诉浏览器做什么。
  • javaScript对大小写敏感。
  • JavaScript忽略空格
3,变量:
   var ele1,ele2  (多个变量名之间用“,”隔开)
  • 定义数组
    • 得到数组的长度使用的是length
    • var arr=new Array("hello",1,"world");
    • var arr=["hello","world",1];
    • var arr=new Array();arr[0]=1;arr[1]="hello";arr[2]="world";
4,运算符:

  1. 算数运算符中的++(i++先运算在加;i=10;j=i++; 输出j=10;);(++i先加再运算;i=10;i=++j;输出j=11;)
  2. i+=10;相当于i=i+10;
  3. 任何类型的变量与字符串进行“+”的操作之后,都会被视为字符串
  4. ==:值相同就会返回true; === :的值同&&数据类型一样
5,条件语句
        
        
        
        
if(条件){
成立执行这个
}else{
否则执行这个
}
         
         
         
         
if(条件){成立执行这个}
else if(条件){成立执行这个}
else{否则执行这个}

感觉就像是路口分出几条走的路。
        
        
        
        
switch(条件){
case 结果1 :
执行
break;
case 结果2:
执行
break;
default:
执行;
break;
 
}

 
6,循环语句:
        
        
        
        
var arr=[1,2,3,4,5,6]
for(var j=0;j<6;j++){
document.write(arr[j]+",");
}

1,普通的for循环:
   for(变量;条件;操作){执行的语句}
        
        
        
        
var arr=[1,2,3,,4,5,6];
var j;
for(j in arr){
doucument.write(arr[j]+",");
}

2.for in 循环
        
        
        
        
while(条件){
成立的时候一直执行
}
 
do{
成立的时候执行
}while(条件)

do{}while()是先执行,再判断

7,跳转语句:
        
        
        
        
var arr=[1,2,3,4,5]
var j;
for(j in arr){
if(j==3){break;}
document.write(arr[j]+",");
}
 
输出结果:
1,2,3

跳出本次循环
        
        
        
        
var arr=[1,2,3,4,5]
var j;
for(j in arr){
if(j==3){continue;}
document.write(arr[j]+",");
}
输出结果:
1,2,3,5

跳出本次循环,进入到下一次循环。

8,函数:
        
        
        
        
函数的定义:
 
function 函数名(v1,v2,...){
代码块;
}

v1,v2,是参数
        
        
        
        
函数的调用:
1,在<script>demo()</script>
 
2, 在html中通过事件触发
<button onclick="demo()">按钮</button>
 

 

9,局部变量和全局变量:


10,javaScript的异常处理
        
        
        
        
try{可能发生异常的语句;}catch(错误){错误信息的处理}

        
        
        
        
throw:创建一个自定义的错误:
 
try{创建错误;}catch(错误){对异常进行处理}


11,javaScript的事件:

       
       
       
       
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js的事件处理</title>
<style type="text/css">.oo{width:100px; height:100px; background:#ff0;}</style>
</head>
<body onload="load()" onunload="unload()">
<!-- 鼠标点击 -->
<button onclick="clickF(this)" >按钮</button>
<script type="text/javascript">
function clickF (obj) {
obj.style.background="red";
}
</script>
<!-- 鼠标划过和鼠标划出 -->
<div class="oo" onmouseover="onover(this)" onmouseout="onout(this)"></div>
<script type="text/javascript">
function onover (obj) {
obj.innerHTML="鼠标划过";
}
function onout (obj) {
obj.innerHTML="鼠标划出";
}
</script>
 
<!-- 文本内容改变 -->
<input type="text" value="文本内容" id="ctxt" onchange="changeText(this)">
<script type="text/javascript">
function changeText (obj) {
obj.style.background="red";
}
</script>
 
<!-- 文本框中的内容被选中 -->
<input type="text" value="我是内容啊" onselect="selectText(this)">
<script type="text/javascript">
function selectText (obj) {
obj.style.color="red";
}
</script>
 
<!-- 光标聚集事件 &移开光标的事件-->
<input type="text" value="光标聚集事件" onfocus="focusText(this)" onblur="blurText(this)">
<script type="text/javascript">
function focusText (obj) {
obj.style.background="red";
}
function blurText (obj) {
obj.style.background="blue";
}
 
</script>
 
<!-- 网页加载事件和网页关闭事件 -->
<script type="text/javascript">
function load () {
alert("网页加载完毕");
}
 
function unload () {
alert(关闭网页事件)
}
</script>
</body>
</html>


12,javascript的DOM对象
1,什么是dom:
2,dom用来干什么:
DOM操作HTML
1,改变html的输出流:doucument.write("");  注意:绝对不能够在文档加载完毕之后使用这个,因为会覆盖
2,寻找元素:
  • 通过id找到html元素: document.getElementById("id名字");
  • 通过标签名找到html的元素: document.getElementsByTagName("")  //当有多个的时候,默认返回的是第一个
3,改变html的内容:innerHTML
4,改变html的属性:
     obj.属性名
DOM操作css
格式是: obj.style.属性=new style;
DOM的事件句柄:
好处:可以对同一个DOM元素添加多个事件句柄。
语法:obj.addEventListener("事件名",处理方式)
      obj.removeEvnetListener("事件名","处理方式");

13,事件的详解:
1,事件流:


2,事件处理:4.是Ie8-
兼容各种浏览器的处理方式:

3,事件的对象:


卸载事件(onunload)
当用户退出页面(页面关闭或者是刷新的时候)
13,javaScript的对象:
1,什么是对象:所有的事物都是对象
2,自定义对象:
  •  定义并创建对象实例
  • 使用函数自定义对象,然后创建新的对象实例。

1,定义对象并创建实例:
        
        
        
        
people=new Object();
people.name="lily";
people.age="30";
 
________________
people={name:"lily",age:"30";}
 

2,使用函数自定义对象,然后创建新的对象实例:
function people(name,age){
  this._name=name;
  this._age=age;
}
son=new people("lily",30);
3,String字符串对象:
  •  indexOf()  :查找字符串的位置,有的话,返回位置;没有的话,返回-1;
  •  match()  :内容匹配,有的话"返回匹配的内容";没有的话,返回null
  •  replace("原来的","新的") :将原来的内容变为新的内容
  • toUpperCase()/toLowerCase() :大小写转换
  • 将字符串转换为数组:split("可以切割的");
4,Date日期对象:
  常用的方法:
  • getFullYear():获取年份
  • getTime() :获取毫秒
  • setFullYear():设置具体的日期
  • getDay():获取日期
        
        
        
        
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jsDate对象</title>
</head>
<body onload="startTime()">
<script type="text/javascript">
// var date=new Date();
// document.write(date);
// 获取年份
// document.write(date.getFullYear());
// 获取毫秒数
// document.write(date.getTime());
// 设置日期
// date.setFullYear(2016,1,1);
// document.write(date);
// 获取星期
// document.write(date.getDay());
 
 
// 简单的时钟的例子
function startTime () {
var today =new Date();
var h=today.getHours();
var m=today.getMinutes();
var s=today.getSeconds();
m=checkTime(m);
s=checkTime(s);
document.getElementById("did").innerHTML=h+":"+m+":"+s;
t=setTimeout(function(){startTime();},1000);
 
}
 
function checkTime(time){
if(time<10){
time="0"+time;
}
return time;
}
 
 
</script>
 
<div id="did"></div>
</body>
</html>


14,Array数组对象:
常用的方法:
concat():合并数组;
sort():排序;
push():末尾追加元素
reverse():数组元素的翻转
slice(start,end):返回一个新的数组,从start到end的元素
join(分隔符):

15,Math对象
常用的方法:
1,round():四舍五入的方法
2,random():返回0~1之间的数
3, max():返回最高值
4,min():返回最低的值
5,abs():返回绝对值
 

16,DOM对象控制Html
方法是:
  • getElementsByName()  --获取name
  • getElementsByTagName()  -获取元素
  • getAttribute(name)  ---获取元素属性
  • setAttribute(name,value)  --设置元素属性
  • childNoddes   --访问子节点
  • parentNode    --访问父节点
  • createElement()  --创建元素节点
  • createTextNode()  -创建文本节点
  • insertBefore(new,old)  --插入节点(在同一个父亲中)
  • removeChild()   ---删除节点
  • offsetHeight()  --网页尺寸 (不带滚动条)
  • scrollHeight()  --网页尺寸 (带滚动条)
  • nodeName:获得节点的名称
  • nodeValue:节点的值
  • nodeType:节点的类型(1元素 2属性 3文本 8注释 9文档)
  • 常用的用于获取元素的网页的尺寸的方法: 
访问子结点的第一项和最后一项:
node.firstChild()  ----elementNode.childNodes[0]
node.lastChild()   ----elementNode.childNodes[length-1]
 
访问父结点:
node.parentNode()
 
访问兄弟结点:
node.nextSibling() 同一个树后接跟着的
node.previousSibling():同一个树种之前的
 
获取浏览器窗口可视区域大小的方法:浏览器的视口,不包括工具栏和滚动条

在不同浏览器都实用的 JavaScript 方案:

var w= document.documentElement.clientWidth
      || document.body.clientWidth;
var h= document.documentElement.clientHeight
      || document.body.clientHeight;
 
offsetHeight和offsetWidth,获取网页内容高度和宽度(包括滚动条等边线,会随窗口的显示大小改变)。
offsetHeight = clientHeight + 滚动条 + 边框

二、浏览器兼容性

var w= document.documentElement.offsetWidth
    || document.body.offsetWidth;
var h= document.documentElement.offsetHeight
    || document.body.offsetHeight;
 
获取滚动条的高和宽:
var w=document.documentElement.scrollWidth || document.body.scrollWidth;var h=document.documentElement.scrollHeight || document.body.scrollHeight;

17,javaScript的浏览器对象:
常用的方法:

1,计时器:
  • setInterval("clock()",1000)
    或
    setInterval(clock,1000)
2,window.history:
  •  返回前一个浏览的页面:window.history.back();  window.history.go(-1);
  •  返回前下一个浏览的页面:window.history.forward();  window.history.go(1);
3,location对象
  属性:
方法:

4,Navigator对象:

几种浏览的user_agent.,像360的兼容模式用的是IE、极速模式用的是chrom的内核。
5,screen对象

1,window对象:
  • window对象是当前浏览器的窗口
  • javaScript全局对象、函数以及变量都会自动的变为window对象的成员。
  • document也是window对象的成员之一
  • window尺寸:(不包括滚动条,工具栏和标题)
    • windwo.innerHeight 浏览器的内部高度
    • window.innerWidth  浏览器的内部宽度
  • window方法:
    • window.open("url","名字","width:;height:;left:;top:;"):打开新窗口
    • window.close():关闭当前窗口
 

2,计时器:
  • 计时器的方法:
    • setInterval(function,delay):间隔指定的毫秒数不停的执行代码,返回对象t
      • clearInterval(t):用于停止setInterval()方法
    • setTimeout():暂停指定的毫秒数后,执行指定的代码
      • clearTimeout():停止setTimeOut()方法
3,History对象:
  • 浏览器的历史(url)的集合
  • History的方法:
    • histroy.back()   相当于后退按钮
    • history.forward() 相当于前进按钮
    • history.go() 进入历史中的某个页面
 
4,Location对象:
  •    window.location 对象用于获取当前页面的地址(URL),并把浏览器重新定向到新的页面
  • Location对象的属性:
    • location.hostname  返回web主机的域名
    • location.pathname  返回当前页面的路径和文件名
    • location.port      返回web主机端口
    • location.protocol  返回使用的web协议(http://或者 https://)
    • location.href      返回当前页面的url
    • location.assign()  加载新的文档
5,Screen对象:
  • window.screen 包含有关屏幕的信息
  • 属性:
    • screen.availWidth  --可用屏幕的宽度
    • screen.availHeight --可用屏幕的高度
    • screen.Height      --屏幕高度
    • screen.Width       --屏幕宽度
 
18,javaScript的面向对象
1,创建对象的两种方法:
        
        
        
        
创建对象的第一种方法:
var person={
name:"lily",
age:30,
eat:function(){alert("能吃")}
}
 
创建对象的第二种方式:
function Person(){}
Person.prototype={
name:"lily",
age:30,
eat:funciton(){alert("第二种!")}
}

 
2,继承:
        
        
        
        
function People(){}
People.prototype.say=function(){alert("hello");}
function Student(){}
Student.prototype=new People();

 
3,重写:
        
        
        
        
function People(){}
People.prototype.say=function(){alert("hello");}
function Student(){}
Student.prototype=new People();
  Student.prototype.say=function(){alert("stu-hello")}
 
4,继承父类:
        
        
        
        
 
//模拟people类
function People () {
}
// 为people添加属性
People.prototype.say=function(){
alert("people");
}
 
// 模拟Student类
function Student () {
}
 
// 让它继承父亲
Student.prototype=new People();
var superSay=Student.prototype.say;
Student.prototype.say=function(){
superSay.call(this); //调用父类
alert("student");
}

 
5,面向对象的思想--封装和对外提供接口
        
        
        
        
 
(function () {
var n="ime";
//模拟people类
function People (name) {
this._name=name;
}
// 为people添加属性
People.prototype.say=function(){
alert("people"+this._name+n);
}
 
// 对外提供
window.People=People;
}());

注意点:
  • 用()将其封装起来
  • 如果需要使用的话,末尾加上()
  • 对外提供接口:window.xxx=xxx;
6,面向对象的思想--封装和对象的赋值:
        
        
        
        
 
// 进行封装
(function(){
var n="lily"
function People (name) {
//创建一个该类的对象
var _this={}
_this._name=name;
_this.eat=function(){alert("Peat"+_this._name+n)}
 
//最后把对象给返还回去
return _this;
}
 
// 对外的接口
window.People=People;
}());
 
 
function Student(name){
// 继承
var _this=People(name);
// 使用父类的方法
var superEat=_this.eat();
_this.eat=function () {
superEat.call(this);
alert("seat"+_this.name);
}
 
return this;
 
}

 

复制、传递和比较数据:

  • Number和Boolean的类型得到值是按进行复制,传递和比较的。原来的值和复制的值是两个独立的副本,即使其中一个改变,也不会影响下一个。
  • 对象,数组以及函数是按引用来进行复制,传递和比较的。原来的引用和现在复制的引用指向的是同一块内存,其中一个指向的内容改变,另外一个指向的内容也会改变。
  • 字符串是按照引用进行复制和传递的,但是是按照值进行比较的。

特殊字符:

  
width关键字:
with  语句可以方便地用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性。要给对象创建新的属性,必须明确地引用该对象。   
    
    
    
    
with (Math){
x = cos(3 * PI) + sin (LN10)
y = tan(14 * E)
}

清除当前文档

document 对象的 clear() 方法将清空当前文档。该方法也将清除您的脚本(随文档的其他部分一起),因此要特别注意该方法的使用方式及在什么时候使用该方法。

document.clear();

经典的小案例:
1,递归:
   
   
   
   
     
     
     
     
function factorial(aNumber) {
 
aNumber = Math.floor(aNumber); // 如果这个数不是一个整数,则向下舍入。
 
if (aNumber < 0) { // 如果这个数小于 0,拒绝接收。
 
return -1;
 
}
 
if (aNumber == 0) { // 如果为 0,则其阶乘为 1。
 
return 1;
 
}
 
else return (aNumber * factorial(aNumber - 1)); // 否则,递归直至完成。
 
}

________________________________________________
不同的思路的理解:
  • 常用的互动的方法:
    • 警告对话框(alert(字符串或变量))
    • 确认(confirm(str))
    • 返回值为boolean值
  • 控制权--dom的操作
    • 三种常见的DOM节点的结合

你可能感兴趣的:(javaScript的基础学习)