js 学习笔记

基础内容

1.DOM定位 查询标签

	document.getElementById("demo"); //根据id定位标签
//两者只能使用其中一种!
//通过$包装
	function $(id){  //id定位,例:$("demo")
		return document.getElementById(id);
	}
//个人想法,并没什么用,传入(类型,内容)  例:$("ByName","demo")
	function $(type,content){
	      if(type == "id"){  //id定位
	        return document.getElementById(content);
	      }else if(type == "ClassName"){  //class定位
	        return document.getElementsByClassName(content);
	      }else if(type == "ByName"){  //name属性定位
	        return document.getElementsByName(content);
	      }else{
	      	//......
	      }
	}

除了id,其他类型可能返回数组类型,所以还可使用数组操作方法

2.简单计算、拼接字符

(1).判断符合条件的数字

/*
    *根据传入的数字判断是否符合条件
    *return 0:不符合条件,1:能被3整除,2:能同时被3和7整除
*/
	function checkNum(num){
	    if(num%3==0){
	        if(num%7==0){
	            return 2;
	        }else{
	            return 1;
	        }
	    }else{
	        return 0;
	    }
	}

(2).拼接字符串

function getInfo(){
	//resultHTML中存放拼接后返回html中的字符串
	var resultHTML="";
	//循环0到500中能够被3和7整除的数字,并进行拼接
	for(var i=0;i<=500;i++){
		var num = checkNum(i);  //调用上文方法
	   	if(num>0){  //符合条件
	   	/*
	   		以下有两种结果:
	   		1.<span class="num">+i+"</span>" (能被3整除)
	   		2.<span class="num div_7num">+i+"</span>"(同时被3,7整除)
	   	*/
	   		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(网页加载时调用)
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(){
	//prototype (向对象添加属性和方法)
    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 = "小黑"; //修改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;  //在索引为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);  //removed中为['小红','铁蛋']

删除索引2后的元素,当deleteCount >= array.length - start ;(array.length == 5)
如splice(2,3)

var removed = arr.splice(2,3);  //removed中为['小红','铁蛋']

从尾部开始定位,start为负数时,
如splice(-2,1)

var removed = arr.splice(-2,1);  //removed中为['小红']

(4).修改

  • splice (start,deleteCount,item)
//定义数组
var arr = ['小明', '小黑', '小红', '铁蛋'];

删除并插入新的元素

var removed = arr.splice(2,1,"小蓝","波波");  //removed中为"小红"

(5).查询、遍历

//定义数组
var arr = ['小明', '小黑', '小红', '铁蛋'];
  • 索引值查询 (indexOf)
var a1 = arr[0];  //a1中为["小明"]
var a2 = arr.indexOf("小黑");  //a2中为索引值 1
  • 遍历 (forEach)
arr.forEach(function(item, index, array){  //index可省略
	console.log(index+":"+item+" ");
});
// 0:小明 1:小黑 2:小红 3:铁蛋
  • 返回索引 (findIndex)
var e = "铁蛋";
function(e){  
	var idx = arr.findIndex(function(element){
		return element == e;  //找不到时返回-1
	});
}	
console.log(idx);  // 3
  • 返回值 (find) 找不到时返回 undefined
var e = "铁蛋";
function(e){  
	var name = arr.find(function(element){
		return element == e;  //找不到时返回-1
	});
}	
console.log(name);  //["铁蛋"]

(6).排序

  • sort
      纯数字排序
    
var numbers = [4, 2, 5, 1, 3];
numbers.sort(function(a, b) {
  return a - b; //升序
  //return b - a;  降序
});
console.log(numbers);  // [1, 2, 3, 4, 5]
	按对象.属性排序
function sortAsc(property){
    return function (a,b){
        return (a[property] - b[property]);  //按sNum升序排序
    };
};
function getSort(){
    stuList.sort(sortAsc("sNum")); //传入sNum作为排序属性
};

4.jQuery框架

jQuery API-cuishifeng中文文档

(1) 基本应用

  • 基本定位
$("#myId");  //获取html中id属性为 myId 的标签
$(".myClass");  //获取html中class属性为 myClass 的标签
$("span"); //获取html中标签为 span 的标签
  • 层级
$("form input");  //后代元素选择器
$("form > input");  //子级元素选择器
$("div ~ input");  //匹配与div同层且在div之后的标签元素

5.JSON文件读取与应用

(1).读取JSON文件

  • 本地JSON
//获取json数据
$.getJSON("../data/pca-data.json",  //本地json文件地址
	function(data){  //方法
		console.log(data);
	}
);

使用vs code中Live Server插件后,右击选择Open with Live Server
相当于将JSON文件放入小型开发服务器,可自动重载文件

在这里插入图片描述

(2).JSON文件的格式

  • Data 数据 (使用 " " 包含)
"firstName":"John" //"name" : "value"
  • 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);

obj对象

  • 对象 ==> json
var jsonData = JSON.stringify(obj);

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值