js基础笔记


:本文为初学js时的笔记,未详细检查,仅作为本人学习记录查阅,内容可能有瑕疵。

js功能

1.数据的验证

2.将动态内容写入到网页中(ajax)

3.可对事件做出响应

4.可读写html中的内容

5.可检测浏览器(是手机还是电脑访问,谷歌浏览器可以模拟手机界面)

6.模拟动画

js特点

面向对象编程oop:Object oriented programming

不仅可以写在<head>也可写在<body>里

从上向下解析,从上面开始执行

引入方式

A.嵌入式调用

<script type=“text/javascript”></script>

B.可以在超链接或是重定向的位置调用javascript代码

格式:"javascript:alert('我是超链接')"

重定向格式:action="javascript:alert('我是表单')"      

C.在事件后面进行调用   

D.调用外部javascript文件

格式: <script src=“js.js” type=“text/javascript”></script>

输出工具

A.alert();

B.document.write()

C.prompt(“提示文字”,“默认值”)

命名规范

严格区分大小写;变量名字必须以字母,下划线或美元符开头(不能数字开头);不能用关键字或保留字命名;

第二个开始每个单词首字母大写(驼峰),每个单词之间加下划线(都是为了更好识别);变量的命名要有意义;

六大数据类型

1.undefined被声明但没有赋值

2.null没有这个变量

3.数值类型

4.字符串类型:用引号包起来的都是字符串

5.布尔值

6.object对象: var hd={} 很多属性(变量)和方法(函数)的集合体

注意:如果变量被重新声明,但是没有被重新赋值,那么变量值是不变的

>>>>检测数据类型:

var hd;

var re=typeof hd;

document.write(re);

运算符

算术运算符,关系运算符(比较运算符),赋值运算符,逻辑运算符,三元运算符

js运算能力一般,一般不用来进行精准运算

==只判断内容,不判断类型

===不但比较值是否相等,还比较类型是否相等

!=只判断内容

!==都判断

注意:Undefine,Null  假

Boolean  就是本身的值

Number   除了0以外都是真的

String   除了空字符串以外都是真的 

对象   真

函数
创建

1.function 函数名([参数1],[参数2]....){     

  函数体     

  [retrun]

  }

2.用自变量的形式创建函数

var tringle= function(){ }

>>>>带参函数的创建:

1.想清楚功能

2.搭建函数框架

3.确定需要的参数

4.安排处理流程

调用

1.函数名()

2.触发调用对象.事件=function (){}

3.自调用 (finction hd(){})()(闭包中可能用到)

注意:NAN:not a number

实参比形参个数多可以调用,但是多余的会被忽略,若实参比形参少,没有对应形参,就是undefined

变量的作用域

全局变量

局部变量:在函数内var声明的变量(缺少一个都是全局变量)

Js内置顶层函数

1.Number()转换成数值类型

    A.如果是布尔值,false为0,true为1   

    B.如果是数字,转换成为本身。将无意义的后导0去掉。  

    C.如果是undefined 转换为NaN : not a number 

    D.如果是字符串      

        a.如果字符串当中只有数字,转换为10进制(忽略前导0和后导0)      

        b.如果是有效的规范的浮点型,转换为浮点值(忽略前导0和后导0)      

        c.如果是空字符串,则转换为0      

        d.如果是其他的值,返回NaN

2.parseInt()    将字符串转换为整型

3.parseFloat()    转换为小数

4.isNaN()    判断一个数能否转换为数值类型,如果能转换成数值返回假,不能转换成数值类型,返回真。

5.eval()    用javascript语法来解析字符串内容

对象
创建:

1.用原生形式创建对象(json形式)

var sunflower={

    color:yellow,

    size:high,

    eat:function(){alert(“瓜子”);}

}

Delete 对象.属性:删除属性

2.构造函数方式创建对象

Function huawei(){

    this.size=’5.5寸’,

    this.color.=’白色’,

    this.call=function(){

        alert(‘能打电话);

    }

}

varhuaweiv8= new huawei();

新增,修改属性,方法:

Huaweiv8.color=’金色’;

内置对象:

1.数组对象

属性:Length 设置或返回数组元素的数目

1.数组对象.push( ) 向数组的末尾添加新的元素,返回值是新数组的长度 

2.数组对象.unshift( ) 向数组的开头加入新的元素,返回值是新数组的长度

3.数组对象.pop( ) 删除数组的最后一个元素,返回删除的元素     

4.数组对象.shift( ) 删除数组的第一个元素,返回删除的元素 

5.数组元素.splice(起始位置,数量,添加的元素),用于插入、删除或替换数组的元素(万能函数)

6.数组.slice(开始,结束)数组的分割,slice不改变原数组,只会返回新的结果。slice截取数组的时候,只包含开始,不包含结束

,结束为负n代表倒数第n个。

7.将数组转换成字符串

    var re=shuiguo.join(‘’);

8.数组的连接,将两个数组连接在一起

    var re=shuiguo.concat(jingdian);

注意:Js中没有数组类型,数组是对象类型

数组里单个元素可以是任何类型的数据

>>>>向数组中添加元素的方法

1.push()等顶级函数

2. a[str.length]=' '; //直接赋值

2.字符串对象

属性 Length

获取类型

1.字符串.charAt(num)      返回在指定位置的字符。

2.字符串.charCodeAt(num)  返回指定位置的字符的Unicode编码

3.String.fromCharCode()   将unicode编码转成原始字符

查找类型 

1.字符串.indexOf() 返回首次出现的位置  

2.字符串.lastIndexOf() 返回最后出现的位置  

3.字符串.match() 在字符串中检索指定的值,返回的值就是指定的值,查找有无相关字符

4.字符串.replace(目标值,替换值)替换。默认值替换第一个找到的字符

截取类型    

1.字符串.slice(start,end) 从指定的开始位置,到结束位置(不包括)的所有字符串。如果不指定结束位置,则从指定的开始位置,取到结尾。

2.字符串.substr(start,length) 从指定的位置开始取指定长度的字符串。如果没有指定长度,从指定开始的位置取到结尾。

转换类型  

1.字符串.split();分割成数组 

2.字符串.toLowerCase();转换为小写。 

3.字符串.toUpperCase();大写

3.数学对象

1.取绝对值Math.abs();

2.取近似整数

Math.round()四舍五入(结果一定是整数)

Math.floor()向下取舍

Math.ceil()向上取舍

3.取随机数

Math.random()  取(0,1)间的随机小数

Math.random()*(y-x)+x  取(x,y)之间的随机小数

Math.floor(Math.random()*(y+1-x)+x) 取(x,y)之间的随机整数,概率相同

4.日期对象

GMT格林尼治时间

UTC协调世界时,javascript DATE使用UTC(w)1970,1,1,0,0,0,0所经过的毫秒数,之前为负,之后为正。取值范围为 285616年。

创建日期对象

var dateobj=new Date();  

var time=new Date();不传参数为当前计算机时间

var time=new Date(2014,9,20,10,30,20);传入特定时间(注:月份从零开始计算0~11月)

获取日期信息的方法

getFullYear()获得日期对象中的年份

getMonth()获得日期对象中的月份 (0 ~ 11)

getDate()获得日期对象中的日信息 (1 ~ 31)  

getHours()获得日期对象中的小时 (0 ~ 23)

getMinutes()获得日期对象中的分钟 (0 ~ 59) 

getSeconds()获得日期对象中的秒数 (0 ~ 59)

getDay()获得日期是周几 (0代表周天,1-6分别代表周1-6) 

getTime()获得日期对象中的日期与 1970 年 1 月 1 日相差的毫秒数(比较重要)

设置日期的方法

setFullYear()设置日期对象中的年份(四位数字)。

setMonth()设置日期对象中月份 (0 ~ 11)。

setDate()设置日期对象中月的某一天 (1 ~ 31)。

setHours()设置日期对象中的小时 (0 ~ 23)。

setMinutes()设置日期对象中的分钟 (0 ~ 59)。

setSeconds()设置日期对象中的秒钟 (0 ~ 59)。

setTime()以毫秒设置 Date 对象

定时器

setInterval(函数名,时间)  每隔设定时间执行一次,一直执行

作用:设置轮播图

写法:

1.setInterval(hi,2000);

2.setInterval(function(){},时间);

setTimeout(函数名,时间) 设定时间后执行,仅一次

写法与上面一样

停止定时器(鼠标放在轮播图上就不动了)

clearInterval(定时器名);

clearTimeout(定时器名);

       栗子:  setTimeout(function(){

                            clearTimeout(timer);

                            alert('清除定时器完毕');

                         },3000)

事件

常用事件

1.常用的鼠标事件        

onclick鼠标单击事件   

ondblclick鼠标双击事件   

onmousedown鼠标按下时的事件(拖拽) 

onmouseup鼠标抬起时的事件   

onmousemove鼠标移动事件,在内部移动也触发   

onmouseover鼠标移入事件   

onmouseout鼠标离开时的事件

2.键盘事件  

onkeyup抬起键时的事件  

onkeydown按下键时的事件  

onkeypress按下并放开任何字母数字键时发生

3.表单事件 

onsubmit点击提交按钮时发生的事件 

onblur失去焦点时发生的事件 

onfocus获得焦点时发生的事件 

onchange内容发生变化并失去焦点时触发的事件

4.页面事件  onload

需要用js操作body里元素的时候要用window.onload

5.窗体事件 onresize

6.滚动条事件 onscroll

绑定事件 

1.在脚本中绑定

  document.getElementById("hd").οnclick=function(){

                      alert('pp你好');

               }

2.直接在HTML元素绑定

       <divid="hd" οnclick="hi()"></div>

事件监听

多个事件监听不会被覆盖,多个绑定事件会被覆盖

addEventListener是W3C的标准方法,不支持IE低版本

document.getElementById("hd").addEventListener('click',function(){

        alert("触发");

              })

低版本ie解决方案:

    document.getElementById("hd").attachEvent('onclick',function(){

              alert('低版本IE才能触发');

        })

>>>>兼容方案

       if(document.all){ //判断浏览器

            document.getElementById("hd").attachEvent('onclick',function(){

             alert('低版本IE才能触发');

       })

       }else{

                     document.getElementById("hd").addEventListener('click',function(){

                     alert("W3C触发");

              })

       }

js组成部分

1.ECMA语法

2.bom浏览器对象模型

3.dom文档对象模型

浏览器对象模型——BOM

用于描述对象与对象之间层次关系的模型。BOM由多个对象组成,其中代表浏览器窗口的window对象是BOM的顶层对象,其他对象都是该对象的子对象。

window对象包含history对象,location对象,document对象,frames对象,navigator对象……

window对象

alert();prompt();confirm();

history对象

属性:length 返回浏览器历史列表中的URL数量。 

方法:history.back()加载history列表中的前一个URL(history的主要用法,例n秒后返回上一页)  

history.forward()加载 history 列表中的下一个

history.go(number)  -1时返回上一个

location对象

三种跳转(页面没找到,n秒钟跳到***):

location.replace('http://houdunren.com');

location.assign('http://houdunren.com');

location.href='http://houdunren.com';

刷新页面(应用:n秒后重玩)

location.reload();

都是跟定时器配合使用

document对象

一、属性  document.title返回或设置当前文档的标题

二、方法(抓元素):

getElementById(idname)      

getElementsByTagName(tagname)

getElementsByName(name)

getElementsByClassName()

Document.getElementById(“”).getElementByClassName(“ ”);

注意:通过id抓住的元素只有一个,但是通过class/tagname/name抓住的元素会以数组的形式返回,哪怕只抓到一个元素

    var ps=document.getElementsByClassName(“”);  //数组

    for(var i=0;i<ps.length;i++){

ps[i].style.color=“red”;

}

DOM

对html元素的样式(颜色、大小、位置等等)、内容、属性来进行动态的改变和操作。

操作内容   

1.innerHTML  用来设置或获取标签内的所有内容     

2.innerText  用来设置或获取标签内的文字内容(只有IE)   

3.textContent用来设置或获取对象起始和结束标签内的文字内容 (W3C)

兼容写法:

1.前面有~~if(document.all){}else{}

2.var con=title.innerText ||title.textContent ;

操作元素特定属性

获取:对象.属性 设置:对象.属性 = 属性值

特定属性:ID、CLASS、A标签的href属性、IMG标签的src属性等

获得任意属性

对象.getAttribute(属性名)

设置任意属性:

对象.setAttribute(属性名,属性值)

获取样式

获得行内样式方法:document.getElementById("hd").style.width;

注:元素.style.css样式的写法只能获得元素的行内样式

行内样式和外部样式通用的获取方法:

对象.currentStyle.CSS样式:IE用来获得实际的样式属性

getComputedStyle(对象,null).CSS样式:火狐用来获得实际的样式属性,只能获取不能设置

>>>>程序输出调试方法:

1.alert();

2.document.title= ; 可以在标题栏看到值的变化

3.console.log( ); 将每次信息输出到控制台

DOM模型

HTML文档中的所有节点组成了一个文档树模型,HTML 文档中的每个元素、属性、文本等都代表着树中的一个节点。这些节点相互联系,相互影响,构成一个完整的页面,我们称之为模型。

HTML文档中的每个成分都是一个节点。 整个文档是一个文档节点  每个 HTML 标签是一个元素节点包含在 HTML 元素中的文本是文本节点 每一个 HTML 属性是一个属性节点注释属于注释节点

获得节点关系的属性

对象.parentNode  获得父节点的引用     

对象.childNodes  获得子节点的集合     

对象.firstChild  获得第一个子节点的引用     

对象.lastChild  获得最后一个子节点的引用     

对象.nextSibling  获得下一个兄弟节点的引用     

对象.previousSibling 获得上一个兄弟节点的引用

一.创建元素节点

1>创建空元素节点document.createElement("元素标签名");

2>创建属性节点对象.setAttribute(属性名,属性值)

3>创建文本节点  对象.innerHTML="";

二.追加到页面当中   

父对象.appendChild(追加的对象) 在指定元素节点的最后一个子节点之后添加节点

父对象.insertBefore(要插入的对象,之前的对象)  插入到某个对象之前

三.删除节点

父对象.removeChild(删除的对象) 如果确定要删除节点,最好也清空内存 对象=null;

四.修改(替换)节点

父对象.replaceChild(新节点,被修改的节点);

五.复制节点

待复制的节点.cloneNode()方法创建指定节点的副本。该方法有一个参数(true 或 false)。如果设置为true,所有的子节点也会克隆,否则只会克隆本节点。

获得元素属性

位置

offsetTop,offsetLeft 返回元素相对于父元素的left top值      

1.设定了position 属性。如果是有定位属性的元素,获得的直接是他的left,top值

2.没有设定position 属性,参照离他最近的定位属性来获得结果

尺寸

offsetWidth,offsetHeight获得元素实际的高度和宽度(加上边框的宽度)

获得可见区域的高度和宽度

document.documentElement.clientWidth  

document.documentElement.clientHeight

具有滚动条元素的属性

scrollTop 

scrollLeft

scrollHeight

scrollWidth

对象.οnscrοll=function(){};滚动条事件

事件对象用来记录一些事件发生时的相关的信息的对象   

1.只有当事件发生的时候才产生,只能在处理函数内部访问   

2.处理函数运行结束后自动销毁。

如何获取事件对象   

IE:window.event   

FF:对象.on事件=function(e){}

兼容解决办法:varev=window.event||e;

关于鼠标事件

相对于浏览器位置的    

clientX 当鼠标事件发生的时候,鼠标相对于浏览器左侧的距离    

clientY 当鼠标事件发生的时候,鼠标相对于浏览器Y轴的位置

相对于事件源的位置    

IE: offsetX 、offsetY           

FF: layerX、layerY

注意:使用layerX和layerY时需要给事件源元素添加定位属性

关于键盘事件     

keyCode  获得键盘码    

altKey判断是否按下alt键,按下是true反之是false布尔值

ctrlKey    

shiftKey

事件流:当页面元素触发事件的时候,该元素的容器以及整个页面都,会按照特定顺序响应该元素的触发事件,事件传播的顺序叫做事件流程。

事件流的分类

1.冒泡型事件(所有的浏览器都支持) 由明确的事件源到最不确定的事件源依次向上触发。 2.捕获型事件(IE不支持 w3c标准火狐) 不确定的事件源到明确的事件源依次向下触发。

阻止事件流(事件对象)

IE:  事件对象.cancelBubble=true;  

火狐:  事件对象.stopPropagation();

阻止浏览器默认行为

IE:事件对象.returnValue = false;

火狐:事件对象.preventDefault();

重定向来阻止默认事件:<a href=”javascript:void(0);”></a>

Tips:

保存页面

Ctrl,点击src就能打开网页中图片进行保存

Ctrl+s

Alt出现菜单栏,将页面另存/直接在页面ctrl+s,选择全部,保存。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值