千锋教育JavaScript全套视频教程(10天学会Js,前端javascrip

【10天学会Js,前端javascript入门必备】day01
1.js中的hello world
弹出对话框并显示 alert("hello world")
页面显示 document.write("hello world")
控制台显示 console.log("hello world")

2.js代码的书写位置
行内式:写在标签<>内
<a herf="javascript:alert('我是一各弹出层');">点击一下试试</a>
<div onclick="alert('我是一个弹出层')">点击一下试试</div>
内嵌式 可以放在head,也可以放在body里
<script type="text/javascript">
alert('我是一个弹出层')
</script>
外链式

3.js注释和变量
//单行注释 多行注释/* */
var 变量值 = 值【1】一个变量名只能存储一个值【2】赋值覆盖【3】严格区分大小写
命名规则

4.数据类型
Number :10、12.5、0xff、0b11、2e3、 a+b
String:"20",10+"20"=1020
Boolean:true、false
Undefined:声明但未赋值
Null:null
Symbol、复杂类型
检测数据类型

数据类型转换



5.运算符
数字运算符[ + - * / %]

console.log("1"+"2"*3+4) =>164
赋值运算符

比较运算符

逻辑运算符
&& || !
自增运算符
i++ ++i
i-- --i
三元运算符
?:
day02
6.条件分支语句和循环分支语句
if语句
①
if(条件表达式){ 语句... }
②
if(条件表达式){ 语句... }else{ 语句... }
③
if(条件表达式){ 语句... }else if(条件表达式){ 语句... }else if(条件表达式){ 语句... }else if(条件表达式){ 语句... }else{ 语句... }
switch语句
switch (变量/表达式) { case 常量值/变量/表达式: 语句; break; case 常量值/变量/表达式: 语句; break; default: 语句; }
- 1、===
- 2、不要比较运算符
- 3、break
while语句
while(条件表达式){ 语句... }
do{ 语句... }while(条件表达式)
和while的区别:
while:先判断后执行
do...while: 先执行后判断
do...while可以确保循环体至少执行一次
for循环
for(1初始化表达式 ; 2条件表达式 ; 4更新表达式){ 3语句... }
break 和 continue
break;
:立即终止本层次循环。
continue;
:立即跳过本层次循环,提前进入本层次的下一次循环。
7.函数
1、定义函数
声明式:function test1(){......}
赋值式:var test = function(){......}
【区别】声明式先调用再声明,赋值式先定义再调用
2、调用函数
test()
函数参数
形参:形式参数
实参:实际参数
可以不传参、形参只能在函数内部去使用
函数返回值 return
1、看需求要不要返回值
2、return打断函数执行
预解析

作用域
全局直到页面关闭
局部(函数内)
局部变量vs全局变量
访问规则

https://github.com/Stone186/JavaScriptStudyDemo
day03
8.对象
复杂数据类型:存储一些基本数据类型的一个集合
①字面量创建 var obj ={
num:100,
str:"hello woorld",
boo:true
"a+b:"111"
}
obj.num obj.str obj.boo
②内置构造函数 var obj = new Object()

对象的基本操作
①
增:var obj = { }
查:document.write(obj.name)
改:obj.name = "Jack"
删:delete obj.name
②
增:obj2["name"] = "Tom"
查:document.write(obj2["name"])
改:obj["name"] = "Jack"
删:delete obj["name"]
区别:键名为"a+b"表达式只能使用第二种方式
对象遍历
for(var i in obj){
document.write(i+":"+obj[i])
document.write("<br>")
}
不同数据类型的存储
栈:存储简单类型 堆:复杂类型
obj2 = obj1引用

9.数组

var arr = [10,11,12,13,14,15]
//字面量创建数组
var arr1 = new Array(10,11,12,13,14,15)
var arr2 = new Array(10)
//new 数组 arr1有6个元素 arr2有10个元素(empty)
数组基本操作
length
arr.length // 可读可写
arr.length = 0清空数组
index
arr[0]
遍历
for (var i=0;i<arr.length ;i++){console.log(i)}
push:追加元素 返回值:长度
pop:删除元素 返回值:删除元素
unshift:前面追加元素 返回值:长度
shift:前面删除元素 返回值:删除的这个元素
splice:删除或增加 删:arr.splice(1,3) 加arr.splice(1,0,"hello") 删后加 arr.splice(1,2,"hello","woorld")
resver:倒序
sort: 排序 可接受一个回调函数arr.sort(function(a,b){
return a-b //从小到大 b-a从大到小
})
concat: 拼接

join:数组=>字符串arr.join("|")
slice:截取(开始索引,结束索引)
indexof:获取索引值
lastIndexof:-1找不到(从后往前)返回值:删除内容
forEach:遍历,回调函数
arr.forEach(function(item,index){consloe.log(itemm,index})
map:映射 回调函数
var arr = arr.map(function(item){return item})
filter:过滤 arr.filter(function(item){ return true/false(bool型数据,满足一个返回一个) item>200 })
every:每一个 arr.every(function(item){return (bool每一个都需要符合条件为true,只要有一个不符合false) item>=90 })
some:只要有一个 arr.some(function(item){return (bool每一个都不符合条件为false,只要有一个符合true) item>=90 })
find:找出所有符合条件,多个只给一个arr.find(function(item){return item.key === 100})
reduce:叠加
arr.reduce(function(prev,item){return prev+item},0(初始值,可以为空字符串""))
冒泡排序
- for (var i = 0; i < arr.length - 1; i++) {
- for (var j = 0; j < arr.length - 1 - i; j++) {
- if (arr[j] > arr[j + 1]) {
- var tmp = arr[j]
- arr[j] = arr[j + 1]
- arr[j + 1] = tmp
- }
- }
- }
选择排序
- for (var i = 0; i < arr.length - 1; i++) {
- var minIndex = i;
- for (var j = i+1; j < arr.length; j++) {
- if (arr[minIndex] > arr[j]) {
- minIndex = j
- }
- }
- var tmp = arr[i]
- arr[i] = arr[minIndex]
- arr[minIndex] = tmp
- }
数组去重:
一、
- var arr = [1, 3, 2, 4, 3, 2, 5, 6, 4]
- var arrcpoy = []
- for (var i = 0; i <arr.length;i++){
- if(arrcpoy.indexOf(arr[i]) === -1){
- arrcpoy.push(arr[i])
- }
- }
二、利用对象
- for (var i = 0; i < arr.length; i++) {
- obj[arr[i]] = ""
- }
- var arr2 = []
- for (var i in arr2) {
- arr2.push(i - 0)
- }
三、new Set
- var set1 = new Set(arr)
- var arr1 = Array.from(set1)
四、splice
字符串
var str1 = "hello"
var str2 = new String("world")
str1.length(长度只读)str2[index] (索引只读)字符串可以直接用 = 赋值(简单类型)
统计字符串中单词重复次数

字符串常用方法
chartAt(索引) 返回对应的字符
charCodeAt(索引) 返回索引对应的字符编码 String.formCharcode(i) 将字符编码i转为字符

toUpperCase() toLowerCase()大小写转换
substr(开始索引,截取长度) substring(开始索引,结束索引) slice(开始索引,结束索引) 截取字符串
replace 替换 replace("目标字符","替换字符")只替换遇见第一个 所有:for循环或正则表达式
split str.split("|")分割字符串
indexOf lastIndexOf

contact 连接字符串 +
trim 去掉首尾空格
trimStart() trimLeft()去掉首空格
trimEnd() trimRight()去掉尾空格
模糊查询

day04
json字符串
var str = '{"name":"jack","age":"20"}'
var obj = JSON.parse(str)
var obj1 = {"name":"tiechui"}
var str1 = JSON.stringify(obj1)
模板字符串ES6
\ ` 表明还是同一字符串
- var myhtml =
- "<li>111<li>
- <li>111<li>
- <li>111<li>"
- var myhtml2 =
- "<li>111<li>\
- <li>111<li>\
- <li>111<li>"
- var myhtml2 =
- `<li>111<li>
- <li>111<li>
- <li>111<li>`
${ 变量 }
- var name = "stone"
- var str = `my name is ${name}`

数字常用方法Number
toFixed(n)保留n小数位,返回字符串类型
Math对象
random 0~1之间随机数,包括0不包括1
round 四舍五入
ceil 向上 floor向下取整
abs 绝对值
sqrt 平方根
pow(底数,指数) pow(2,3)=8
max(多个参数) 取最大值
max(多个参数) 取最小值
PI π
随机整数

函数实现

时间对象
new Date()不传参返回当前时间
一个参数 new Date(毫秒数) 1970 1 1 0:00 + 毫秒数
二个参数 、三个参数 new Date(年,月,日,时2,分,秒)
字符串 new Date("2023-10-10 10:10:10")
时间对象常用方法
getFullYear() 年 getMouth() /0~11=>1~12/ getDate()日 getDay()获取周几(周日 0 一 ~ 六 1~6)
getHours() getMinutes() getSeconds() getMilliseconds()
getTime()获取时间戳 1970 1 1 0:00 至今 毫秒数
new Date(getTime()) 当前时间
设置setFullYear() setMouth() setDate() 无setDate(根据年月日获取) setHour() setMinutes() setSeconds()
setTime() 等价于new Date()
定时器 倒计时和间隔定时器
倒计时 setTimeout(执行函数,多长时间后执行) clearTimeout()
间隔定时器 setInterval(执行函数,执行间隔) clearInterval()
按钮对象 button 绑定事件 btn.onclick = function(){}
异步执行 死循环阻塞异步代码

倒计时案例
- <!DOCTYPE html>
- <head>
- <meta charset="utf-8">
- <title>倒计时案例</title>
- </head>
- <body>
- <div id="box"></div>
- <script>
- var targetDate = new Date("2023/6/18")
- function diffTime(current, target) {
- var sub = Math.ceil((target - current) / 1000)
- var day = parseInt(sub / (60 * 60 * 24))
- var hours = parseInt(sub % (60 * 60 * 24) / (60 * 60))
- var minutes = parseInt(sub % (60 * 60) / 10)
- var seconds = sub % 60
- var obj = {
- day: day,
- hours: hours,
- minutes: minutes,
- seconds: seconds
- }
- return obj
- }
- setInterval(function () {
- var currentDate = new Date()
- var res = diffTime(currentDate, targetDate)
- box.innerHTML = `京东618-${res.day}天${res.hours}时
- ${res.minutes}分${res.seconds}秒`
- }, 1000)
- </script>
- </body>
day05
BOM对象
1、获取浏览器窗口尺寸
window.innerHeight,innerHeight/innerWidth包含滚动条宽高
2、浏览器弹出层 阻塞式弹出
alert() window.alert()
confirm()询问框 返回值 true/false
prompt() 输入框 返回 输入内容字符串
3、浏览器地址栏
location.herf 获取地址栏或跳转
location.herf = "自定义页面" 跳转
reload 刷新
4、浏览器常见事件
onload()所有资源加载完毕执行

resize
onresize 屏幕大小改变是发生 响应式布局
onscroll 屏幕发生滚动触发
浏览器滚动距离document.documentElement.scrollTop(scrollLeft)
去除<!DOCTYPE html>时失效 , 使用document.body.scrollTop 保证兼容性 ||
window.scrollTo(x,y) 滚动到对应x、y坐标
或({left:0,top:0})
5、浏览器打开标签页
window.open("htttp://www.baidu.com")
window.close()关闭当前标签页
6、浏览器历史记录
window.history.back()后退 必须保证有上一个页面
history.forword()前进 必须保证有下一个页面
history.go(1|-1) 1前进一个页面,-1后退一个页面
7、浏览器本地存储

localStorage与当前页面有关
setItem("key","value")只能存字符串,存对象:JSON.stringify({ }) 取JSON.parse
getItem("key")
removeItem("key")
clear()删除全部
sessionStorage 用法相同 区别 localStorage永久存储 关闭页面或电脑都存在 sessionStorage 会话存储(临时)
案例 记住用户名

DOM对象 文档对象类型

获取元素的方式
非常规 html,head,body
document.doucmentElement // rem
document.head document.body
常规=> id,class,tag、、、
document.getElementById("id")
document.getElementsByClassName
var item = document.getElementsByClassName("newsitem") console.log(item)//伪数组 items[0].innerHTML = "news-111" for(var i=0;i<item.length;i++){ item[i].innerHTML = "news-"+i }转换真数组var newitems = Array.form(items)
document.getElementsByTagName("li")返回伪数组
name <input name="username/password" type="text/password">
document.getElementsByName("username/password") 返回伪数组
css选择器
querySelector返回对象,返回遇到的第一个
var item = document.querySelector("#box")
querySelectorAll
var item = document.querySelector("ul li.newsitem")
操作元素属性
day06
初识事件
事件源、事件类型、事件处理函数

DOM0类型 后面会覆盖前面的 box.onclick
DOM2 绑定多个事件处理函数,按顺序执行
box.addEventListener兼容性attachEvent
this.disabled = "disable"
事件解绑 ①dom.onclick = null
function handler(){}
②box.removeEventListener("click",handler)
兼容性detachEvent
事件类型
click单击 dbclick双击
右键 contextmenu btn.oncontextmenu 自定义右键菜单
mousedown mousemove mouseup鼠标
移入移出 mouseover/mouseenter mouseout/mouseleave 区别前面的在孩子节点也会触发
键盘

focus / blur 获取/失去焦点
change 获取焦点和失去焦点时对比内容不一样时触发
submit / reset
阻止表单触发

移动端
touchstart touchmove touchend touchcancel
事件对象



