30分钟学会JS,最简单的JavaScript学习,JavaScript(一门客户端脚本语言)

30分钟学会JS,最简单的JavaScript学习,JavaScript(一门客户端脚本语言)

1.JS概述
1)概念
js全程:JavaScript(一门客户端脚本语言)
a.js可以直接嵌入在html页面中,由浏览器解释执行,不进行预编译
b.用于向页面添加动态交互行为
c.具有与java语言类似的语法,一种网页编程语言

操作方向:
—操作DOM元素(html元素)
—操作BOM元素(浏览器对象)

2)js特点:
1.解释执行:不需要预编译,逐行执行
2.基于对象:内置了大量的现成对象

3)作用
a.实现客户端数据简单计算
b.客户端表单合法性验证
c.添加浏览器事件的突发
d.网页特殊显示效果的制作
e.实现服务器的异步数据提交

4)遵循es规范(es6)
a.严格区分大小写
b.数字、字母、下划线、$组成,不能用数字开头
c.驼峰命名法

5)写法
a.行内式(定义事件)
在事件中定义操作,直接写js代码
alert(); 弹出警告框
事件:
onclick 鼠标点击
ondblclick 鼠标双击
onmouseover 鼠标移入
onmouseout 鼠标移出
onkeydown 键盘按下
onkeyup 键盘抬起
onblur 失去焦点
onfocus 获取焦点
写法:
οnclick=“函数()”; 事件=“事件触发的函数”;

b.内部式(嵌入式)
嵌入在页面的

c.外部式(文件调用)
js代码位于单独的.js文件中(注意保存的编码)
写法:
step1:在js文件中写js代码(定义行数)
step2:将.js文件引入到当前页面中

step3:在html行内添加事件,调用函数

js注释
单行://注释文字
多行:/注释文字/

js控制台:
不需要页面也可以直接在控制台(console)写js代码
F12(右击检查)---->打开控制台
Enter回车键:执行
Shift+Enter:换行

console.log(内容);//将内容打印到控制台

2.js组成
1)变量(var let const 无)
js是弱类型语言,使用var关键字声明变量
刑如:
var a = 1;
var s = “李四”;

拆:
var a;//a没有类型
var a=1;//初始化a才会有类型,a为number类型
a=“李四”;//a为String类型

typeof 变量名;//用来验证变量名

注意:
1.js是弱类型语言,不同的变量类型会根据数值自动给定类型
2.变量没有类型,统一用关键字var声明,变量值是有类型的
3.使用“=”进行赋值,没有初始化的变量自动取值为undefined
4.js存在变量声明提升(js会根据不同的值自动转换为对应的数据类型)

js数据类型
a.基本类型number、string,boolean
number:不区分整数和小数
 

 string:一对引号包裹的字符串(单双引都可以)
 ----单双引号只能交替引用,特殊字符需要转义   \n  \t  \s
 常用函数:
 str.indexof("",from[int index]);
 返回指定字符串在str中第一次出现的位置(从from开始第一次出现的位置)
 str.replace("","");
 将指定字符串替换为指定字符串,只替换第一个,属于不完全替换
 
 boolean:仅有两个值,true、false
 可以参与运算,自动作为数值,true值为1,false为0

b.特殊类型undefined、null
undefined
变量声明未初始化,该变量的值和类型均为undefined
null
代表"无值"或者"无对象",可以通过一个变量赋值null来清空变量内容

c.对象类型object
内置对象 外部对象 自定义对象

数据类型转换:
a.自动转换(直接转换属于默认规则)
number+string=string
boolean+string=string
boolean+number=number
boolean+boolean=number

b.强制转换(利用类型转换函数)
toString();任何类型转换成string类型

parseInt();强转为整数,全局函数,具有截取功能

parseFloat();强转为小数,全局函数,具有截取功能

NaN:Not a Number(不是数字,不能转换成数字)

isNaN();全局函数,判断是否为非数字(true表示非数字,false表示数字)

案例1:
验证用户输入的是否位数字,若是数字则求平方,若不是数字则给出提示。

运算符
a.数学运算符 + - * / % ++ –
+:表示数学加法,或者字符串连接运输
-、*:若字符串参与,将数值字符串以数字参与运算
/:java中7/2=3,js中7/2=3.5
 

b.关系运算  > >= < <= == !=
==:只比较值,不比较类型
===:比较类型和值
 
c.逻辑运算符&&(与) ||(或) !(非) 
 短路逻辑:结果为boolean类型,true或者false
 非短路逻辑:结果为number类型(1或者0)
 
d.三元运算符(三目)
语法:判断表达式?表达式1:表达式2;

注意:js中出现的判断表达式或者调解表达式可以为任意表达式,可以为任何类型
转换规则:
非0数字、非空字符串、{}、对象----->true
0、null、“”、undefined、NaN------->false

案例2:
用户在页面输入一个值,判断是否为50,要求提升用户输入大,小,对?

js的流程控制
a.分支流程if-else ,switch-case

b.循环流程	for,while,do-while

案例3:
统计输入框重点敏感字(gun)出现的次数,将敏感字替换为"***"

调错方式:
1.在js代码中添加console.log()或者alert()
2.检查浏览器缓存的js文件,看错误信息
3.浏览器自带的断点debugger调试

内置对象:
简单内置对象:Number String
组合内置对象:Math Date Array
复杂内置对象:Funtion RegExp
 

1.Number:对象
var age=10;
var salary=new Number(10);//不常用

常用函数:
num.toFixed(n);
将数值转成为字符串,并通过四舍五入保留小数点后n位,如果位数不够补0
 
2.String:对象
var str1="abc";
var str2=new String("abc");	//不常用

常用属性与函数:
length;返回字符串长度
toUpperCase();小转大
toLowerCase();大转小
charAt(index);返回指定位置的字符串
indexOf(findStr,[fromIndex]);从指定下标位置查找字符串第一次出现的位置
lastIndexOf(findStr);返回一个指定字符串最后一次出现的位置
substring(start,[end]);截取指定下标位置的字符串(前包括后不包括)
split(byStr,[howmany]);将字符串进行拆分,得到字符串数组(几个)
replace(findStr,toStr);字符串替换(不完全替换)

组合内置对象:Math Date Array
复杂内置对象:Funtion RegExp

3.Math对象
常用函数:
Math.sqrt(a);//返回数字a的平方根
pow(a,b);//返回a的b次幂(方)
random();//返回0-1之间的随机数
round(x);//返回数字x四舍五入最接近的整数
max(x,y,z…);//找出其中最大值
min(x,y,z…);//找出其中最小值
abs(x);//返回x的绝对值
floor();//向下取整
ceil();//向上取整

4.Date对象
var date=new Date();//当前系统时间
var date1=new Date(“2009/02/05”);//指定日期时间

常用函数:
getTime();//获取当前时间的毫秒值
getDate();//获取当前日期
getDay();//获取当前一周的第几天
getFullYear();//获取当前的年份
toLocalString();//转换成字符串数据(当前时间)
setDate();//修改日期本身的值

5.Array对象(数组的数据类型可以不一致)
var arr1=[10,“张三”,30,true];//常用
var arr2=new Array(10,“张三”,30,true);
var arr3=new Array();
var arr4=new Array(5);//指定数组长度

注意:数组长度是可变的,由内部元素撑开大小

常用属性和函数:
length;获取数组长度
reverse();翻转数组
sort([函数名]);数组排序,默认规则:数组的数据首个字母排序;自定义规则:根据传的函数名排序。

6.Function对象
js中函数就是Function对象,函数名就是指向Function对象的引用,
可以直接使用函数名访问函数对象,函数名()是调用函数。

函数定义:
方式一,使用function关键字声明一个函数	
function 函数名([参数]){
   函数体;
   return 返回值;
}
函数的返回值默认返回undefined,可以使用return返回具体的值

方式二,匿名函数
var 函数名=function([参数]){
    函数体;
   return 返回值;
}

方式三,创建一个Function对象
var 函数名=new Function("参数1","参数2","函数体;");
ps:小括号里面前面是函数的参数,后面是函数体

补充:
方式四,箭头函数(c6以后)
var 函数名=([参数])=>{函数体;}

注意:在js中没有类似于java的重载,如果方法名相同,则以最后一个为准


js如果需要实现类似于java的重载效果,可以使用arguments对象实现
arguments代表当前方法被传入的所有参数形成的参数数组
arguments.length:函数的参数个数
arguments[i]:取第i个下标的元素

补充:变量的作用域(var 无 let const)
 1.var声明的变量,可以修改,不初始化输出undefined,有作用域
        定义在函数内部--->私有变量--->整个函数体
		定义在函数外部--->全局变量--->整个js(存在变量提升)
 2.let是块级作用域,函数内部使用let定义后,对函数外部无影响
 3.const定义的变量初始化以后不可以修改--->类似于java常量
 4.没有任何关键字声明的变量--->全局变量

全局函数:所有js对象都可以使用
parseInt(); parseFloat(); isNaN();
eval(“js代码”);-----执行函数
只接受合法的表达式和语句/只接受原始的字符串

7.RegExp正则对象
var reg=/正则表达式/tag;
var reg=new RegExp(“正则表达式”,“tag”);

tag标识:
g(globel):设定当前匹配为全局匹配
i(ignore):忽略匹配中的大小写检查

正则表达式的常用组成部分:
() 普通
[] 枚举,范围 [12345]/[1-5]
{} 次数,个数

/a/:不完全匹配
/^a/:以a开头
/a/:以a结尾/a/:以a结尾/^a/:以a结尾/ 
a
 /:完全匹配

常用函数:
正则对象.text(字符串);
判断一个字符串是否匹配该正则表达式,符合返回true,不符合返回false

String对象中适用正则的函数:
str.replace(reg,toStr);//替换
str.match(reg);//返回匹配字符串匹配正则的内容,形成数组
str.search(reg);//返回字符串第一次匹配正则的下标

外部对象:
BOM(Broswer Object Model):浏览器对象模型
用来访问和操作浏览器窗口,是js有能力和浏览器对话,
执行操作不与页面内容发生直接关系,没有相关标准,但被广泛支持和使用

DOM(Document Object Model):文档对象模型(html文档)
用来操作文档,定义了访问和操作html文档的标准方法,应用程序通过DOM操作,
来实现对html文档数据的操作,当页面被加载时,浏览器会创建页面的文档对象模型(DOM树),
通过可编程的对象模型,js能够创建动态的html(元素、属性、样式、事件)。
DOM常用操作:读取节点的信息、修改节点的信息、创建新节点、删除节点

1.BOM对象
window是前台最大的对象,用来表示浏览器窗口。全部的js都是全局变量、全局对象和全局函数。
比如:alert(111);等价于window.alert(111);

5个属性:
document:窗口中显示的html文档
history:浏览器窗口的历史记录
location:窗口文件地址
screen:浏览器当前屏幕
navigator:浏览器相关信息

5个对象:
Document:
History:
length:返回访问的地址个数
back();返回上一个地址
forward();进入下一个地址
go(index:index<0 回退,index>0 前进)
Location:
href:当前窗口正在浏览的网页地址
reload();重新载入当前页面
Screen:
width;实际的屏幕宽度
height;实际屏幕的高度
availWidth;可用的屏幕宽度
availHeight;可用的屏幕高度
Navigator:
userAgent;获取浏览器相关信息的属性

全局函数:
对话框:
window.alert(msg);//提示对话框(警告框)
window.confirm(msg);//确认对话框
window.prompt();//文本输入框
 

打开新窗口:
window.open(url);//打开新窗口
定时器:
a.一次性定时器
在一个设定的事件间隔后执行代码,不是函数被调用之后立即执行
var t=window.setTimeout(执行语句|函数名,time);
t表示返回已经启动的定时器对象
time表示时间间隔,单位毫秒

停止定时器:clearTimeout(t);

b.周期性定时器
以一定的时间间隔循环执行代码
var t=setInterval(执行语句|函数名,time);

停止计时器:clearInterval(t);

案例:
显示时间按钮,启动时间按钮,停止时间按钮

DOM对象(DOM树)在页面加载时候由浏览器生成的整个html文档,
操作文档中任何内容,都需要通过document

js可以创建动态的html(元素(节点)、属性、样式、事件)
js对DOM操作:查找、读取、修改、新增、删除

查找(节点):
1.通过id查找
document.getElementById(“id名”);
如果id值错误,则返回null

2.通过标签名查找
     document.getElementsByTagName("标签名");
	 根据指定标签名返回全部元素组成数组,
	 如果标签名错误,返回长度为0的节点数组,根据下标定位具体的节点
	 
3.通过添加name属性查找
    document.getElementsByName("name属性");
	根据指定的name返回全部的元素组成数组
	
4.通过层次查找节点
    ele.parentNode
	遵循文档的上下层次结构,查找单个父节点
	
	ele.childNodes
    遵循文档的上下层次结构,查找多个子节点

5.根据选择器查找节点
    document.querySelector("选择器");
	选择符合选择器的第一个节点
	
	document.querySelectorAll("选择器");
	选择符合选择器的所有节点

6.根据class属性查找
    document.getElementsByClassName("选择器");
	根据指定的class返回全部的元素组成的数组

读取、修改(文本、属性、样式…)
innerHTML属性:
设置或者获取位于对象起始和结束标签内的文本
不解析html文本,将文本内容当成字符串打印

innerText属性:
设置或者获取位于对象起始和结束标签内的文本
只能获取解析之后的文本内容

 读取:ele.innerHTML       ele.innerText
 修改:ele.innerHTML=值    ele.innerText=值

读取、修改样式
读取:ele.style
修改:ele.style=“样式:样式值”;
ele.style.样式属性=“样式”;

注意:样式属性的写法 font-size改成fontSize(驼峰写法)

读取、修改属性
读取:

  读取:ele.getAttribute(属性名);	  
  修改:ele.setAttribute(属性名,属性值);	  

ele.属性;
修改:ele.属性=值;

获取、修改节点class(推荐)
ele.className
ele.className=值;

案例:
图片的显示和隐藏

轮播图

新增节点:
1.通过innerHTML属性给页面添加节点
ele.innerHTML=“html代码”;

2.通过函数给页面添加节点
a.创建节点
document.createElement(“节点名称”);
 

 b.添加新节点到指定位置
 追加:新节点作为父节点的最后一个子节点添加
 父节点.appendChild(新节点);
 
 旧节点为参考点,新节点位于此节点之前添加
 父节点.insertBefore(新节点,旧节点);

删除节点:
父节点.removeChild(删除的指定节点);

js的事件:
事件是指页面元素状态改变,用户在操作鼠标或者键盘时触发的动作

鼠标事件:
onclick; 鼠标单机
ondblclick; 鼠标双击
onmouseover; 鼠标移入
onmouseout; 鼠标移出
onmousedown; 鼠标按下
onmouseup; 鼠标抬起

键盘事件: e.keyCode 键盘键码值
onkeydown 键盘按键按下
onkeyup 键盘按键抬起

状态事件:
onfocus 获取焦点
onblur 失去焦点
onchange 选择(下拉框、单选框、复选框)
onsubmit 表单提交
onload 加载

事件的定义:
方式一,在元素上添加对应的事件
如:

方式二,在js中直接给元素节点添加事件
元素节点.事件名=function(){}

方式三,元素节点.事件名=函数名;

event对象
任何事件触发之后都会产生一个event对象

事件冒泡:
若子节点和父节点有相同的事件,子节点会向上触发父节点的同名事件

取消事件冒泡:e.cancelBubble=true;

**
js自定义对象
自定义对象是一种特殊的数据类型,有属性和方法封装而成

属性:指与对象有关的值,访问方式:对象名.属性名
方法:指对象可以执行的行为或者可以完成的功能
访问方式:对象名.方法名

创建自定义对象的三种方式:
方式一:直接创建对象(直接创建Object对象)
var user=new Object();

方式二:"构造器"创建对象

方式三:JSON创建对象(JSON是一个轻量级数据交换格式)
JSON使用属性名:属性值的方式定义,所有的名称都要用双引号引起来,多个属性直接用逗号隔开
 

网上有人分享经验,说到学习前端开发技术JavaScript很实用的一些书籍,从入门到高级,一一列举,很不错。整理了一下发上来。 名称: JavaScript+DOM编程艺术.pdf 概述: “本书理应奉为经典。文笔清晰,采用了优秀的编程原则,严格遵守相应的标准。真是完美的结合。” ——Slashdot “我要隆重推荐本书。它前所未有地演示了DOM脚本编程的真正潜力。无论你是JavaScript新手还是专家,本书都绝对必读。”——Garrent Dimon,Digital-Web.com 随着Ajax的兴起,JavaScript再一次成为炙手可热的技术。然而,在历史上,它并不是一直这么幸运,由于主流浏览器之间的不兼容,以JavaScript为核心的DHTML曾经昙花一现,很快被人遗忘。 俱往矣,如今的网页设计已经翻开了新的一页。在CSS彻底改变了Web页面布局的方式之后,万维网联盟跨浏览器的DOM标准的制定,使JavaScript终于突破瓶颈,成了大大改善网页用户体验的利器。 本书在简洁明快地讲述JavaScript和DOM的基本知识之后,过几个实例演示了大师级的网页开发技术,并透彻阐述了一些至关重要的JavaScript编程原则和最佳实践,包括预留退路、循序渐进和以用户为中心等。读者可以非常直观地加以领悟,迅速使自己的编程技术更上一层楼。 第1章 JavaScript简史  1.1 JavaScript的起源  1.2 浏览器之争  1.3 制定标准  1.4 小结 第2章 JavaScript语法  2.1 准备工作  2.2 语法  2.3 语句  2.4 变量  2.5 操作  2.6 条件语句  2.7 循环语句  2.8 函数  2.9 对象  2.10 小结 第3章 DOM  3.1 文档:DOM中的“D”  3.2 对象:DOM中的“O”  3.3 模型:DOM中的“M”  3.4 趁热打铁  3.5 小结 第4章 案例研究:JavaScript美术馆  4.1 编写标记语言文档  4.2 编写JavaScript函数  4.3 JavaScript函数的调用  4.4 对JavaScript函数进行功能扩展  4.5 小结 第5章 JavaScript编程原则和良好习惯  5.1 不要误解JavaScript  5.2 预留退路  5.3 向CSS学习  5.4 分离JavaScript  5.5 向后兼容性  5.6 小结 第6章 案例研究:JavaScript美术馆改进版  6.1 快速回顾  6.2 解决“预留退路”问题  6.3 解决“分离JavaScript”问题  6.4 JavaScript函数的优化:不要做太多的假设  6.5 DOM Core和HTML-DOM  6.6 小结 第7章 动态创建HTML内容  7.1 [removed]()方法  7.2 innerHTML属性  7.3 DOM提供的方法  7.4 重回“JavaScript美术馆”  7.5 小结  7.6 下章简介 第8章 充实文档的内容  8.1 不应该做的事情  8.2 把“不可见”变成“可见”  8.3 原始内容  8.4 XHTML文档  8.5 CSS  8.6 JavaScript代码  8.7 小结  8.8 下章简介 第9章 CSS-DOM  9.1 三位一体的网页  9.2 style属性  9.3 何时该用DOM脚本去设置样式信息  9.4 className属性  9.5 小结 第10章 用JavaScript实现动画效果  10.1 何为动画  10.2 实用的动画  10.3 改进动画效果  10.4 最后的优化  10.5 小结 第11章 学以致用:JavaScript网站设计实战  11.1 案例背景介绍  11.2 页面视觉效果设计  11.3 CSS  11.4 颜色  11.5 XHTML文档  11.6 JavaScript脚本  11.7 小结  11.8 下章简介 第12章 展望DOM脚本编程技术  12.1 Web的现状  12.2 Ajax技术  12.3 Web应用  12.4 小结 附录 DOM方法和属性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值