JS知识点

js笔记1
------------------------------------------------------------------------------------------------------------
typeof();对变量或值使用,则返回它数据类型;

1.undefined:undefined

2.boolean:boolean

3.number:number

4.string:string

5.null或引用类型:object

类型转换:

alert("4"-3);

1.字符串类型和number做减法运算,会先将字符串转化为number,再运算。

aliert(‘4’+3);

2.做加法运算时,如果表达式中有一个为字符串,那都是做字符串连接操作。结果为“43”。

alert(2+3+"5");

3.结果时“55”,先做2+3运算,再和“5”做字符串连接。



alert("3"*"4");

4.结果为12,做乘法时,先将操作数转为number,再运算。



alert("四"*"五");

5.将字符串转变为number时,失败,结果为NaN。



alert(NaN==NaN);

6.结果为false,NaN表示为数字,它与自身不相等,一般发生再类型转为失败时。



alert("66"==66);

7.结果为ture,先将“66”转化为number,再比较。



alert("66"===66);

8.结果为false,===比较时,不但比较内容,而且还比较类型。

强制转换:

parseInt():将字符串转化为numer类型.


var x="6";

x=parseInt(x);

alert(x);

1.上述结果为8。

alert(parseInt("65px"));

2.parseInt会将第一非数字以后的内容丢弃。

alert(parseInt("px65"));

3.如果第一个字符为非数字,结果为NaN。

parseFloat():浮点字符串的转换


alert(parseInt("65.5"));

alert(parseFloat("65.5"));

1.parseFloat支持浮点字符串的转换。

正则表达式:

var rex=/^d{3,}$/;

alert(rex.test("3425345"));

1.test()用于检测字符串是否匹配正则表达式。

数组:

var a=new Array();

var b=[];

var c=[3.4.5.6];


1.数组定义


alert(a.length);

2.数组长度


c[1]=12;

c[10]=10;

c.length=3;

alert(c);

3.数组赋值


alert(c.length+" "+"fdfdsa".length);

4.数组和字符串的长度采用length属性获得。


c.push(10);

alert(C);

5.向数组的尾部追加元素。

日期:

var d=new Date();

alert((d.getYear()+1900)+" "+(d.getMonth()+1)+" "+d.getDate());

1.得到当前事件的日期类型。

验证字符串是否为非数字:

alert(isNaN("123"));

判断数字是否有界:

alert(4);

alert(4/0);

解释执行一段字符串:

alert("abc");

eval("alert('abc')");

流:

流按传输内容分为字节流、字符流、对象流。但是无论是什么流,底层都是字节传输。所以,真正流只有字节流。
但是为流方便程序员对字符数据,和对象数据进行操作,所以,再自己的了基础上错流一层封装,形成流字符流和对象流。

JS对象特点:

1.JS是一个基于原型的面向对象的语言,只有面向对象的的部分特征,没有类,没有接口。

2.JS的函数也是一种对象。

3.JS对象的属性和方法,可以再运行期间动态的添加或删除。
---------------------(运行期间动态的添加或删除)例子------------------------------

var obj=new Object();

obj.age=90;

obj.name="张三";

obj.job="经理";

alert(obj.name+" "+obj.age+" "+obj.job);


delete obj.job;

alert(obj.name+" "+obj.age+" "+obj.job);

----------------------------------------------------------------------------------------

获取对象属性值:

1.alert(obj.name);

2.alert(obj["name"]);

获取对象属性和方法:

for(var fileName in obj){

alert(fileName+" "+obj[fileName]);

}

创建对象:

function Man(name,age,job){

this.name=name;

this.age=age;

this.job=job;

}


var m1=new Man("张三",20,"经理");

var m2=new Man("李四",18,"程序员");


alert(m1.name+" "+m1.age);

alert(m2.name+" "+m2.age);


---------------------------------------------------------------------

//属性名可以加引号也可以不加

//创建json对象

var obj={};

var man={name:"张三","age":12,job:"经理"};

alert(man.name+" "+man.age+" "+man.job);


----------------------------------------------------------------------

var storArray=[{name:"面包",price:5,address:"四川"},

{name:"饮料",price:10,address:"广州"},

{name:"雨伞",price:20,address:"上海"}];

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

var obj=storArray[i];

alert(obj.name+" "+obj.price+" "+obj.address);

}

----------------------------------表格处理-----------------------------------------

window.onload=function(){

var str="";

var dataObj=document.getElementById("data");

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

var obj=storArray[i];

str +="<tr><td>"+obj.name+"</td><td>"+obj.price+"</td><td>"+obj.address+"</td></tr>";

}

dataObj.innerHTML=str;

}


js笔记2
------------------------------------------------------------------------------------------------------------
事件流:

1)事件冒泡(IE)

1.先响应事件源,再响应父容器

2)事件捕获(NetsCape)

2.先响应父容器,再响应事件源

3)事件处理(FireFox)

3.事件处理(以选择先响应父容器,还是先响应事件源)。


JS事件添加的方式有两种:

传统事件添加

1.兼容性好,一个事件只能绑定一个函数。

现代事件添加

2.兼容性不好,不同的浏览器有不同的实现方式,一个事件可以绑定多个函数。

事件类型:
鼠标事件
键盘事件
HTML事件


js总结
------------------------------------------------------------------------------------------------------------
JS总结:
1、javascript的特点
是一种嵌入在网页中的程序段。(客户端脚本语言)
是一种解释型语言,被浏览器解释执行。
JavaScript借用了Java的名字,也使用了部分java的语法。
增强客户端的交互功能。

2、在网页中嵌入js的方式
内嵌式:
<script>
……
</script>

外联式:<script src="aa.js"></script>

直接编写在元素的事件属性中:<input type="button" value="提交" onclick="alert()">

超链接伪URL方式:<a href="javascript: alert('hello World');">Click</a>

3、js变量的特点
弱类型,不一定要初始化。
弱类型是指变量任何数据都可以存放。可以存放数字,可以存放字符串,也可以存放对象的引用。
正因为javascript是弱类型的语言,所以形参不能指明变量的类型。
js变量定义:var x;

4、js原始类型:
undefined:
当声明的变量未初始化时,值为undefined。
当函数无明确返回值时,其调用结果也是undefined。

null:表示不存在的对象。,null是从Undefined派生来的。因此null==undefined

boolean:true或false

number:数字型,可以是整数,可以是浮点数

NaN表示非数字,它与自身不相等。一般发生在类型转换失败时,isNaN()较验是否为数字。

string:可用单引号或双引号声明。比较是否相等用==,方法大部分和java类似。长度:var x = "abc";alert(x.length);

5、使用typeof得到指定变量存放数据的类型。typeof(null) 返回object
使用instanceof判断变量指向对象是否匹配某个类型
var s = new String("hello world");
var b = s instanceof String;
alert(b); //输出true

6、自动类型转换规则
var x = "10"-2;结果:8 —— 自动将"10"转为Number类型
var x="10"+2;结果:'102'-------如有一个为字符串,则是连接
var s=9+2+"8";结果:'118' —— 先进行9+2结果为11,再和”8”连接
var x="2"*"3";结果:6 。自动将字符串转为整形
var y="4"*"abc";结果:NaN ——相乘如有一个为非数字NaN,则结果为非数字NaN

==比较内容,可以进行自动类型转换。===比较时,同时比较类型
alert(55=='55');结果为true; alert(55==='55');结果为false;

7、parseInt()和parseFloat,将字符串转化为number类型
var a = parseInt("1234px"); //返回1234
var b = parseInt("abc"); //返回NaN

8、正则表达式:
var x=/^a{2,8}$/;
alert(x.test("aaa"));
正则表达式一般用于表单验证。<form onsubmit="return checkForm()"> 如果checkForm()返回false,则阻止表单提交
表单提交:表单对象.submit()

9、数组:
创建数组:var x = new Array();
var arr = [1,2,3,4,5,6,7,8];

arr.length; //数组长度
arr.push(100);//追加元素。

10、日期类型
function setDate(){
//创建日期对象
var date = new Date();
//得到年月日,时分秒
var str = (date.getYear()+1900)+"年"+(date.getMonth()+1)+"月"+date.getDate()+"日 ";
str += date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();
spanObj.innerHTML = str;

}

//设置时间函数
var id=window.setInterval("执行代码",毫秒数);
//清除时间函数
window.clearInterval(id);

11、Global全局对象常用方法
isNaN():判断是否是非数字
parseInt():将字符串转化为整型,会将第一个非数字以后的字符全部忽略,转化失败为NaN
parseFloat():将字符串转化为浮点型,转化失败为NaN
eval()。将字符串作为js代码执行。
eval("alert('abc')") 等价于 alert('abc');
encodeURI 将中文,空格重新编码

12、js对象特点
a、js是基于原型的面向对象语言,只有对象,没有类,没有接口。
b、js的函数也是对象
c、js对象的属性和方法,可以在运行期间动态的添加和删除

13、访问、删除、遍历对象属性:
访问对象属性:对象.属性名 var obj = {id:1}; alert(obj.id);
对象["属性名"] var obj = {id:1}; alert(obj["id"]);

删除属性:delete 对象.属性名

遍历对象属性列表
for(var x in dog1){//x为属性名,dog1["属性名"]取该对象指定属性名的值
alert(x+" "+dog1[x]);
}

14、json格式对象
var x = {};
var obj = {name:'张三',age:30};
var arr = [{name:'张三',age:30},{name:'李四',age:24},{name:'王五',age:28}];

15、事件流
事件流意味着页面上不止一个元素可响应相同的事件。
事件冒泡(IE)。(先响应事件源,再响应父容器)
事件捕获(NetsCape)。(先响应父容器,再响应事件源)
事件处理(FireFox)。事件处理(可以选择先响应父容器,还是先响应事件源)

16、事件委派的方式:

传统事件:兼容性好,一个事件只能绑定一个函数:
div1.onclick = function(){

}
div1.onclick=divClick;//只能写函数名


现代事件:一个事件可以绑定多个函数,但兼容性差。

一定要等待浏览器将元素加载完毕后,才能给元素添加事件。一般在window.onload中书写事件添加

17、事件处理程序返回值
如果事件中返回值为false,可以阻止元素默认行为

18、event对象:事件发生时,用于描述事件信息的对象。可以获得鼠标信息和键盘信息
var e;
if(window.event){
e=window.event;
}
else if(arguments[0]){
e=arguments[0];
}
可以通过e.cancelBubble=true(IE)或e.stopPropagation()(firefox)中止事件传播

19、事件类型
鼠标事件:onclick(单击)、onmousemove(移动)、onmouseover(进入)、onmouseout(离开)
键盘事件:keydown(按下)、keyup(弹起)
html事件:window.onload(文档加载完毕后执行)、window.onunload(文档卸载完毕后执行)、onchange(下拉框选项变化执行)、onsumbit(表单提交执行)、onblur(失去焦点执行) onfocus(得到焦点执行)
刷新页面的时候,会触发load事件和unload事件。

20、跳转页面
location.href="aaa.html";

21、dom操作常见方法
createElement()创建新元素
appendChild() 追加元素
removeChild()删除元素
replaceChild():替换元素
parentNode 父元素
nextElementSibling下一个元素兄弟节点
previousElementSibling上一个元素兄弟节点

22、获得文本节点
元素节点.firstChild-获取文本节点
textNode.nodeValue="..." - 设置文本内容

23、访问元素节点:
getElementsByTagName(name):得到元素指定标记子元素集合
getElementsByName(name):得到指定name属性的元素集合
getElementById(id):按ID得到元素对象

24、innerHTML:表示元素中间的文本。在老标准中,table和select不支持。
value属性一般只用于表单元素

25、改变元素的样式,需要style属性,如果样式中有-,则去掉-,采用驼峰命名法
元素对象.style.backgroundColor="red";
通过style属性操作的是内嵌样式。

改变元素对象的class属性:
<div class="aaa"></div>
对象.className="aaa";

26、
multiple:将下拉框变为列表框,可以选中多个选项。
判断下拉框选项是否选中:selected
判断复选框、单选框是否选中:checked

js运算
------------------------------------------------------------------------------------------------------------
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">
<script>
//字符串类型和number做减法运算,会先将字符串转化为number,再运算
//alert("4"- 3); 结果为1

//做加法运算时,如果表达式中有一个为字符串,那么都是做字符串连接操作。
//alert("4" + 3); 结果为43

//结果是"55",先做2 + 3运算,再和"5"做字符串连接
//alert(2 + 3 +"5");

//结果为12,做乘法运算时,先将操作数转为number,再运算
//alert("3" * "4");

//将字符串转化为number类型时失败,结果为NaN。
//alert("四" * "五");

//alert(NaN == NaN);

//结果为true。先将"66"转化为numbe,再比较
//alert("66" == 66);

//结果为false。===比较时,不但比较内容,而且比较类型
//alert("66" === 66)

//var x = "6";
//将字符串转换为number类型
//x = parseInt(x)
//alert(x + 2);

//parseInt会将第一个非数字以后的内容丢弃
//alert(parseInt("65px"));
//如果第一个字符为非数字,结果为NaN
//alert(parseInt("px"))

//parseFloat()支持浮点字符串的转换
//alert(parseInt("65.5"))
//alert(parseFloat("65.5"))

//var rex = /^d{3,}$/;
//test()用于检测字符串是否匹配正则表达式
//alert(rex.test("3425345"));

//定义长度为0的数组
//var a = new Array();
//var b = [];
//var c = [3,4,6,8,9]

//c[1] = 12;
//c[10] = 10;
///c.length = 3;
//alert(c[0])
//数组和字符串的长度采用length属性获得
// alert(c.length + " " + "afafawe".length)


//向数组的尾部追加元素
//c.push(10)
//alert(c)

//得到当前时间的日期类型
//var d = new Date();
//alert((d.getYear()+1900)+ " "+(d.getMonth()+1)+" "+ d.getDate())

//验证字符串是否为非数字
//alert(isNaN("123"))
//判断数字是否有界
//alert(isFinite(4/0))

//alert("abc")
//eval("alert('abc')")

//alert("dajfg 哈说哈 kjf")

// var obj = new Object()
// obj.name = "哈哈哥";
// obj.age = 25;
// obj.job = "包工头";
//alert(obj.name + " " + obj.age + " " + obj.job)

//删除对象的属性
//delete obj.age
//alert(obj.name + " " + obj.age + " " + obj.job)

//得到对象属性值的方式
//alert(obj["name"]+ " "+obj["job"])

//遍历对象中所有属性和方法
// for(var fieldName in obj){
// alert(fieldName+" "+obj[fieldName])
// }

// function Man(name,age,job){
// this.name = name;
// this.age = age;
// this.job = job;
// }
//
// var m1 = new Man("张三",20,"搬砖工");
// var m2 = new Man("哈哈哥",35,"毒贩");
// alert(m1.name+" "+m1.job+" "+m1.age)
// alert(m2.name+" "+m2.job+" "+m1.age)

// var obj = {};//var obj = new Object();
//
// var man ={name:"张三",age:35,job:"搬砖工"}
// alert(man.name+" "+man.age+" "+man.job)

var manArray = [{name:"张三",age:23,job:"泥瓦匠"},{name:"李四",age:27,job:"司机"},{name:"哈哈哥",age:35,job:"包工头"}]
// for(var i = 0;i < manArray.length; i++){
// alert(manArray[i].name+" "+manArray[i].age+" "+manArray[i].job)
// }

var commodityArray =[{name:"洗衣机",price:1200,address:"青岛"},
{name:"电视",price:2400,address:"绵阳"},
{name:"冰箱",price:1800,address:"深圳"}]
// for(var i = 0;i < commodityArray.length; i++){
// alert(commodityArray[i].name+" "+commodityArray[i].price+" "+commodityArray[i].address)
// }

// for(var fieldName in commodityArray){
// alert(fieldName+" "+commodityArray[fieldName])
// }

window.onload = function(){
var tableObj = document.getElementById("table")
var src ='';
for(var i = 0; i < commodityArray.length; i++){

src += "<tr><td>"+commodityArray[i].name+"</td><td>"+ commodityArray[i].price +"" +
" </td><td>"+ commodityArray[i].price +"</td></tr>"
}

tableObj.innerHTML = src
}

var a = parseInt("10"+2)*2
alert(parseFloat("asp"))

window.onload = function(){

}
</script>
</head>

<body>
<table border="1" cellspacing="0">
<thead>
<tr><th colspan="3">家电</th></tr>
<tr><th>商品类型</th><th>价格</th><th>产地</th></tr>
</thead>

<tbody id="table">

</tbody>
</table>
</body>
</html>

原文地址:https://www.cnblogs.com/newcode/p/9229986.html