基础内容
1.DOM定位 查询标签
document
.getElementById("demo");
function $(id
){
return document
.getElementById(id
);
}
function $(type
,content
){
if(type
== "id"){
return document
.getElementById(content
);
}else if(type
== "ClassName"){
return document
.getElementsByClassName(content
);
}else if(type
== "ByName"){
return document
.getElementsByName(content
);
}else{
}
}
除了id,其他类型可能返回数组类型,所以还可使用数组操作方法
2.简单计算、拼接字符
(1).判断符合条件的数字
function checkNum(num
){
if(num
%3==0){
if(num
%7==0){
return 2;
}else{
return 1;
}
}else{
return 0;
}
}
(2).拼接字符串
function getInfo(){
var resultHTML
="";
for(var i
=0;i
<=500;i
++){
var num
= checkNum(i
);
if(num
>0){
resultHTML
+='<span class="num';
if(num
==2) resultHTML
+=" div_7num";
resultHTML
+= '">'+i
+"</span>";
if(++content
% 10==0) resultHTML
+="<br>";
}
}
}
(3).最后效果
3.对象数组的增删改查
W3Schools国内镜像
(1).对象数组的初始化
对象直接量 (不可复用)
var Student
= {
sNum
: 001,
name
: "小明",
age
: 18,
say
: function(){
console
.log("我是"+this.name
);
};
};
window
.onload
= Student
.say();
工厂模式 (无法识别对象类型)
function Student(sNum
,name
,age
){
var s
= new Object();
s
.sNum
= sNum
;
s
.name
= name
;
s
.age
= age
;
s
.say = function(){
console
.log("我是"+this.name
);
};
return s
;
};
var s1
= Student(001,"波波",18);
window
.onload
= s1
.say();
构造函数 (不灵活)
function Student(sNum
,name
,age
){
this.sNum
= sNum
;
this.name
= name
;
this.age
= age
;
this.hobby
= {
h0
: "游泳",
h1
: "睡觉"
};
this.say = function(){
console
.log("我喜欢"+this.hobby
.h1
);
};
};
var s1
= new Student(001,"铁蛋",18);
window
.onload
= s1
.say();
原型模式(定义原型)
function Student(){
Student
.prototype
.sNum
= 001;
Student
.prototype
.name
= "嘟嘟";
Student
.prototype
.age
= 18;
Student
.prototype
.say = function(){
console
.log("我是"+this.name
);
};
};
var s1
= new Student();
var s2
= new Student();
s2
.name
= "小黑";
window
.onload = function(){
s1
.say();
s2
.say();
};
构造函数+原型
function Student(sNum
,name
,age
){
this.sNum
= sNum
;
this.name
= name
;
this.age
= age
;
};
Student
.prototype
= {
say
: function(){
console
.log("我是"+this.name
);
}
};
var s
= new Student(001,"小曾",18);
window
.onload
= s
.say();
(2).新增
var stuList
= [];
function Student(sNum
,name
,age
){
this.sNum
=sNum
;
this.name
=name
;
this.age
=age
;
}
push (添加元素到数组的末尾)
var nLength
= stuList
.push(new Student(sNum
,name
,age
));
unshift (添加元素到数组的头部)
var nLength
= stuList
.unshift(new Student(sNum
,name
,age
));
splice(start,deleteCount,item) (插入)
deleteCount为0或负数时不删除元素
var index
= 1;
stuList
.splice(index
,0,new Student(sNum
,name
,age
));
nlength为新增对象后数组的长度
(3).删除
pop (删除数组末尾的元素)
var last
= stuList
.pop();
first (删除数组最前面(头部)的元素)
var first
= stuList
.first();
splice(start,deleteCount) (删除)
var arr
= ['小明', '小黑', '小红', '铁蛋'];
删除索引2后的元素,deleteCount 若被省略, 如splice(2) ,
var removed
= arr
.splice(2);
删除索引2后的元素,当deleteCount >= array.length - start ;(array.length == 5) 如splice(2,3)
var removed
= arr
.splice(2,3);
从尾部开始定位,start为负数时, 如splice(-2,1)
var removed
= arr
.splice(-2,1);
(4).修改
splice (start,deleteCount,item)
var arr
= ['小明', '小黑', '小红', '铁蛋'];
删除并插入新的元素
var removed
= arr
.splice(2,1,"小蓝","波波");
(5).查询、遍历
var arr
= ['小明', '小黑', '小红', '铁蛋'];
索引值查询 (indexOf)
var a1
= arr
[0];
var a2
= arr
.indexOf("小黑");
遍历 (forEach)
arr
.forEach(function(item
, index
, array
){
console
.log(index
+":"+item
+" ");
});
返回索引 (findIndex)
var e
= "铁蛋";
function(e
){
var idx
= arr
.findIndex(function(element
){
return element
== e
;
});
}
console
.log(idx
);
返回值 (find) 找不到时返回 undefined
var e
= "铁蛋";
function(e
){
var name
= arr
.find(function(element
){
return element
== e
;
});
}
console
.log(name
);
(6).排序
sort
纯数字排序
var numbers
= [4, 2, 5, 1, 3];
numbers
.sort(function(a
, b
) {
return a
- b
;
});
console
.log(numbers
);
按对象.属性排序
function sortAsc(property
){
return function (a
,b
){
return (a
[property
] - b
[property
]);
};
};
function getSort(){
stuList
.sort(sortAsc("sNum"));
};
4.jQuery框架
jQuery API-cuishifeng中文文档
(1) 基本应用
基本定位
$("#myId");
$(".myClass");
$("span");
层级
$("form input");
$("form > input");
$("div ~ input");
5.JSON文件读取与应用
(1).读取JSON文件
本地JSON
$
.getJSON("../data/pca-data.json",
function(data
){
console
.log(data
);
}
);
本地JSON文件跨域问题
由于JavaScript中 “Same-Origin Policy”(同源策略)的限制 即不同域名的JavaScript代码不能够互相访问。
一篇关于Jsonp跨域问题详解的文章
使用vs code中Live Server插件后,右击选择Open with Live Server 相当于将JSON文件放入小型开发服务器,可自动重载文件
(2).JSON文件的格式
Data 数据 (使用 " " 包含)
"firstName":"John"
Objects 对象 (由若干个数据组成)
{"firstName":"John", "lastName":"Doe"}
Arrays 数组 (value中包含对象)
"employees":[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}
]
(3).JSON与对象的相互转换
json ==> 对象
var obj
= JSON.parse(text
);
对象 ==> json
var jsonData
= JSON.stringify(obj
);