首页 > 其他分享 >前端基础

前端基础

时间:2022-08-26 20:44:14浏览次数:83  
标签:function console log 前端 基础 let var document

前端基础

HTML书写页面 CSS 页面美化 JS 页面运动

HTML

超文本标记语言(Hyper Text Markup Language)

基本元素

p 段落标签,独占一行       &nbsp 网页上显示一个空格
i 文字出现斜体效果           hr 水平线   solid实线  shadow阴影
b 文字出现加粗效果          br 换行标记  marquee 滚动
float 浮动 padding 填充  radius半径 relative 相对的有关系的
<span> 标签提供了一种将文本的一部分或者文档的一部分独立出来的方式。
embed mp3\mp4标签
border-style: dashed; 虚线边框
a link 未访问 visited访问后 hover 鼠标事件
    
div
clear 消除float浮动

table表格
td的rowspan跨行
td的colspan跨列

表单(输入框和单复按钮选项框属于)form  域
1.标签=元素
disabled(不可操作)  readonly(只读)  placeholder(提示文本)
autofocus(自动获焦)  autocomplete=”on(默认。规定启用自动完成功能)/off禁用自动完成功能)
2.文本框:<input type="text" name="ID" value=""> autocomplete 自动填充+  placeholder浅色占位符
3.密码框:<input type="password" name="pwd" value="">
4.隐藏域:<input type="hidden" name="">
5.单选框:
  <input type="radio" name="id" checked(选中) value="男">男
          <input type="radio" name="id" value="女">女
6.多选框:
<input type="checkbox" name="id">游戏<br>
<label><input type="checkbox" name="id">游戏<br></label>点字选
<input type="checkbox" name="id"id="sl">睡觉<br><label for="s"></label>
7.下拉列表:
<select name="" id="">
        <option value="">一班</option>        
写在哪里就默认选择哪里 <option value="" selected(默认选择)>二班</option></select>
8.提示文字     <input placeholder=”提示文字”>
9.普通按钮    <input type="button" name="">
10.提交按钮    <input type="submit" name="">在form表单有效<button>
11.重置按钮    <input type="reset" name="">
12.上传文件     <input type="file" name="" multiple>
13.点图提交     <input type="image" name="">
14.选择日期     <input type="date" name="">
15.选择颜色     <input type="color" name="">
16.邮箱email    <input type="email" name="">
17.多行文本输入框textarea

dl自定义列表 dt列表名称 dd列表内容
ul无序列表 
ol有序列表
display:inline 可以使<ul><li></li></ul>中的li无序排列在同一水平线上 

css样式属性
div
clear:both清除左右浮动
overflow 盒子溢出
字体样式
1、边界 margin(0 auto) 上下为0 左右自动
2、font-size字体大小
3、font-style字体的风格
4、font-variant小型的大写字母字体
5、font-family字体名
6、font-weight字体的粗细

文本样式
1、letter-spacing 字符间距属性
2、line-height行距属性
3、text-indent首页缩进
4、text-decoration字符装饰
5、text-transform英文大小写转换属性
6、text-align水平对齐
7、vertical-align垂直对齐  middle放置在父属性中部
8、letter-spacing字符间距
背景图案
1、background-repeat是否重复填充图案
2、background-position背景图案的起始位置

<script>元素的作用是在HTML页面种导入JavaScript,让网页实现各种动画特效,以及与人之间实现更好的交互效果。
<script>的属性有:
属性	描述
type	表示编写代码使用的脚本语言的内容类型(也称为MIME类型)
src	表示外部脚本文件的 URL
async	表示异步执行脚本(仅适用外部脚本),立即下载脚本,不妨碍页面的其他操作
defer	表示是否对脚本执行进行延迟,直到页面加载为止(仅适用外部脚本)

<p>内联框架</p>
<a href="twoTest.html" target="myiFrame">点我</a>  a的target与 iframe的name定位
<a href="twoTest2.html" target="myiFrame">点我2</a>
<iframe id="" name="myiFrame" width="980" height="580"></iframe>

超链接

a target="_blank" 在新标签页打开 _self 在自己的网页中打开


)

锚链接标记

QQ链接:可以进入QQ推广网站中,进行寻找

视频、音频

视频元素


)

音频元素


)

页面结构


)


)

盒子模型

iframe内联框架


)

表单

readonly只读 hidden隐藏 disable禁用 placeholder提示信息(用在输入框控件上) required不能为空

pattern正则表达式

按钮

文本域、下拉框、文件域

CSS样式

1、如何学习

  1. 什么是CSS样式?
  2. CSS怎么用?(快速入门)
  3. CSS选择器(重点+难点)
  4. 美化网页(文字、阴影、超链接、列表、渐变....)
  5. 盒子模型
  6. 浮动
  7. 定位
  8. 网页动画(特效)

1.1、什么是CSS

Cascading Style Sheet层叠级联样式表

1.2、发展史

CSS2.0 DIV(块)+CSS,HTML与CSS结构分离的思想,网页变得简单,SEO

CSS2.1 浮动、定位

CSS3.0 圆角、阴影、动画.....浏览器兼容性~

1.3、快速入门

建议使用这种规范

1.4、CSS的三种导入方式

  1. 行内样式:在标签元素中,编写一个style属性,编写样式即可

  2. HTML页面link添加,外部样式

    • 连接式:

      • <link rel="stylesheet" href="./css/style.css">
        
    • 导入式(不建议使用):会先展示网页再进行渲染

  3. HTML头部编写

  <head>
  <style>

  .content {
      background: red;
  }

  </style>
</head>

1.5、优先级(就近原则)

行内样式 > 内部样式 > 外部样式

2、选择器

作用:选择页面上的某一个或者某一类元素

2.1、基本选择器

不遵循就近原则,id选择器 > class选择器 > 标签选择器

  1. 标签选择器:选择一类标签

  2. 类选择器 Class:选择所有class属性一致的标签,跨标签 .类名{}

  3. id选择器:全局唯一 #id名{}

2.2、层次选择器

2.2.1、后代选择器:在某个元素的后面

body p{background-color: red;}

2.2.2、子选择器,一代,儿子

body>p{background-color: olivedrab;}

2.2.3、相邻弟选择器 只有一个,相邻(对象向下)

.active + p{background-color: darkred;}

2.2.4、通用兄弟选择器:当前选中元素向下的所有兄弟元素

.active~p{background-color: aqua;}

2.3、结构 伪类选择器

伪类:条件 条件即为过滤器

ul li:first-child{/*第一个元素*/background-color: darkmagenta;}
ul li:last-child{/*最后一个元素*/background-color: aquamarine;}

2.4、属性选择器(常用)

id + class 结合

a[]{} []里写选择的属性,如:选择 id = first 的组件

JavaScript

1、快速入门

1.1、引入JavaScript

1.1.1、内部标签引入

<script>
    //JavaScript代码
</script>

1.1.2、外部引入

<script src='//文件地址'>
</script>

测试代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<!--    <script>-->
<!--        alert("hello word!!!");-->
<!--    </script>-->
    <!--外部引入-->
    <!--注意script标签必须成对出现-->
    <script src="./js/xx.js"></script>
<!--    不用显示定义,默认就是javascript语言-->
    <script type="text/javascript"></script>
<body>

</body>
</html>

1.2、基本语法入门

浏览器必备调试须知:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--JavaScript严格区分大小写-->
    <script>
        // 1.定义变量    变量类型 变量名 = 变量值;
        var score = 1;
        // 2.条件控制
        if (score>10){

        }
        /**
         * console.log(score) 在浏览器控制台打印变量!System.out.println();
          */
    </script>
<body>

</body>
</html>

1.3、数据类型

数值,文本,图形,音频,视频.....

变量

var 

number

js不区分小数和整数,统一都用number表示

123 //整数123
123.1 // 浮点数
1.123e3//科学计数法
-99 //负数
NaN //not a number
Infinity //表现无限大

字符串

’abc‘ "abc"

布尔值

true,false

逻辑运算

&&、||、!

比较运算符

=	赋值符
==	等于(类型不一样,值一样,也会判断为true)
===	绝对等于(必须类型一样,值一样,判断为true)

须知:

  • NaN === NaN 结果为false,它与所有的数值都不相等,包括自己

  • 只能通过 isNaN() 方法进行判断是否是NaN

  • 浮点数问题

    • console.log((1/3)===(1-2/3))
      

      尽量避免使用浮点数进行运算,存在精度问题

null和undefined

  • null 是定义了为空
  • undefined 是未定义

数组

Java中的数组必须是一系列相同类型的对象,JS中不需要这样!

//保证代码的可读性,尽量使用[]
var arr = [1,2,3,'hello',null,true];

new Array(1,2,3,'hello',null,true);

取数组下标越界了就会undefined

对象

对象是大括号,数组是中括号~

每个属性之间使用逗号隔开,最后一个不需要添加

//Person person = new Person(1,2,3,4,5);
var person = {
	name:"xxx",
	age:3,
	tags:['js','java','web','....']
}

取对象的值

person.name
> "xxx"
person.age
> 3

1.4、严格检查模式

  • 前提:IDEA需要设置支持ES6语法
  • 必须写在第一行
  • 'use strict'; 严格检查模式,预防JavaScript的随意性
  • 局部变量建议使用let去定义
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    
    <script>
        'use strict';
        let i = 1;
    </script>
<body>

</body>
</html>

2、数据类型讲解

2.1、字符串

  1. 正常字符串使用单引号('')或者双引号("")包裹

  2. 注意转义字符 \

    \'
    \n
    \t
    \u4e2d	\u#### Unicode字符
    \x41	Asc11字符
    
  3. 多行字符串编写

    //tab键上面`
            var smg = `
               hello
               word
               你好呀
            `
    
  4. 模板字符串(ES6新特性)

    let name = "xxx";
    let age = 3;
    let msg = '你好啊, ${name}'
    
  5. 字符串长度

    console.log(str.length)
    
  6. 字符串的可变性,不可变

  7. 大小写转换

    //注意:这是个方法,不是属性
    msg.toUpperCase()//转换大写
    msg.toLowerCase()//转换小写
    
  8. 获取指定的字符串下标

    msg.indexOf('你')
    
  9. 截取字符串

    msg.substring(1)//从第一个字符截取到最后一个字符
    msg.substring(1,3)//从第一个字符截取到第三个字符
    

2.2、数组

Array可以包含任意的数据类型

var arr = [1,2,3,4,5,6]
  1. 长度

    arr.length
    

    注意:如果给arr.length赋值,数组大小就可以发生变化,如果赋值过小,元素就会丢失

  2. indexOf,通过元素获得下标索引

    arr.indexOf(2)
    

    注意:字符串的"1"和数字1是不一样的

  3. slice() 可以截取数组Array的一部分,返回一个新的数组,和字符串的substring类似

  4. push(),pop()

    push:压入到尾部
    pop:弹出尾部的一个元素
    
  5. unshift() shift() 头部

    unshift():压入头部
    shift():弹出头部的一个元素
    
  6. 排序 sort()

    arr.sort()
    
  7. 元素反转reverse

    arr.revers()//将数组里的数据反向排列
    
  8. 数组拼接 concat()

    arr.concat(1,2,3)//数组里写要拼接的内容
    

    注意:concat方法并没有修改原来数组,而是生成一个新的数组

  9. 连接符 join

    打印拼接数组,使用特定的字符串连接

    arr.join('-')
    
  10. 多维数组

    arr = [[1,2],[2,2],["5","6"]];
    arr[1][1]
    2
    

2.3、对象

若干个键值对

var 对象名 = {
	对象属性名:属性值,
	对象属性名:属性值,
}
//定义了一个person对象,他有四个属性
var person = {
	name:"xxx",
	age:3,
	email:"[email protected]",
	score:0
}

JS中对象,{....}表示一个对象,键值对描述属性xxxx:xxxxx,多个属性之间使用逗号(,),最后一个属性不加逗号!

JavaScript中的所有键都是字符串,值是任意对象!

  1. 对象赋值

    person.name = "xixiuxian"
    
  2. 使用一个不存在的对象属性,不会报错 undefined

    person.haha
    undefined
    
  3. 动态的删减属性 ,通过delete删除对象的属性

    delete person.name
    true
    
  4. 动态的添加,直接给新的属性添加值即可

    person.haha = "haha"
    
  5. 判断属性值是否在这个属性中 xxx in xxx

    'age' in person
    true
    //继承
    'toString' in person
    true
    
  6. 判断一个属性是否是这个对象自身拥有的,hasOwnProperty()

    person.hasOwnProperty("toString")
    false
    person.hasOwnProperty('age')
    true
    

2.4、流程控制

if判断:和Java一样

循环:

  • while与for与Java一样

  • 数组循环 forEach

    var age = {1,2,3,4,5,6,7}
    //函数
    age.forEach(function (value){
        console.log(value)
    })
    
  • for...in

    //for(var index in object){}
    for(var num in age){
    	if(age.hasOwnProperty(num)){
    		console.log("存在")
    		console.log(age[num])
    	}
    }
    

2.5、Map和Set

ES6的新特性

Map:

//学生的成绩,学生的名字
var map = new Map([['tom',100],['jack',80],['hhaa',90]]);
var name = map.get('tom');
map.set('admin',12312);
map.delete("tom")//删除
console.log(name)

Set:无序不重复的集合 和Java一样,去除重复项

var set = new Set([3,1,1,1,1,1]);
set.add(2)//添加
set.delete(1)//删除
console.log(set.has(3))//是否包含某个元素

3、函数

3.1、定义一个函数

3.1.1、定义方式一

绝对值函数

function 函数名(函数变量){
    逻辑运算;
    return 值;
}

一旦执行return 代表函数结束,返回结果!

如果没有执行return,函数执行完也会返回结果,结果就是 undefined

3.1.2、定义方式二

var abs = function(函数变量){
    逻辑运算;
    return 值;
}

function(x){...}这是一个匿名函数。但是可以把结果赋值给abs,通过abs就可以调用!

方式一和方式二等价!!!

3.1.3、调用函数

abs(10)//10
abs(-10)//10

参数问题:JavaScript可以传任意个参数,也可以不传递参数!!!

3.1.4、arguments

arguments是一个js免费赠送的关键字,代表,传递进来的所有参数,是一个数组

var abs = function(x){
    
    console.log("x => "+x);
    
    for(var i =0;i < arguments.length;i++){
        console.log(arguments[i]);
    }
    
    if(x>=0){
        return 0;
    }else{
        return -x;
    }
}

问题:arguments会包含所有的参数,我们有时候想使用多余的参数来进行附加操作,需要排除已有参数~

3.1.5、rest

之前的方式:

if (arguments.length>2){
   for (var i =2;i<arguments.length;i++){
                    
   }
}

ES6引入的新特性,获取有已经定义的参数之外的所有参数

现在:

rest参数必须写在最后面必须用...标识

function aaa(a,b,...rest) {
   console.log("a =>" + a);
   console.log("b =>" + b);
   console.log(rest);
}

3.2、变量作用域

在JavaScript中var定义的变量实际上是有作用域的

在函数体内声明,在函数体外不可以使用(非要想实现可以研究闭包

function f() {
   var x = 1;
   x = x + 1;
}
x = x + 2;//Uncaught ReferenceError: x is not defined

如果两个函数使用了相同的变量名,只要在函数体内部就不冲突

function f() {
  var x = 1;
  x = x + 1;
}
function fx() {
   var x = 1;
}

内部函数可以访问外部函数的成员,外部函数无法访问内部函数的成员

function f() {
    var x = 1;
    x = x + 1;
  function fx() {
      y = x + 1;
   }
  var z = y + 1;
}

内外函数变量和外部函数变量,重名。

在JavaScript中,函数查找变量从自身函数开始,由 内 向 外 查找,假设外部存在这个同名的函数变量,则内部函数会屏蔽掉外部函数的变量

function f() {
  var x = 1;
  x = x + 1;
  function fx() {
     var x = 'A';
  onsole.log('内部'+x);//内部A
  }
  console.log('外部'+x);//外部2
  fx();
}
f();

提升作用域

结果:xundefined

function f() {
  var x = 'x' + y;
  console.log(x);
  var y ='y';
}

等价于

function f1() {
   var y;
   var x = 'x' + y;
   console.log(x);
   y ='y';
}

说明:JavaScript执行引擎,自动提升了y的声明,但是不会提升变量y的赋值,这是在JavaScript建立之初就存在的特性。

养成规范:所有的变量都放在函数头部,不要乱放,便于代码维护

3.2.1、全局函数

//全局变量
   x = 1;
   function f() {
   console.log(x);
 }
console.log(x)

全局对象 Window

var x ='xxx';
alert(x);
alert(window.x)

alert()函数本身也是绑定在window下的

JavaScript实际上只有一个全局作用域,任何变量(函数也可以视为变量),假设没有在函数作用范围内找到,就会向外查找,如果在全局作用域都没有找到,就会报错RefrenceError

规范:

​ 由于所有的全局变量都会绑定到window上,如果不同的js文件,使用了相同的全局变量,就会产生冲突

如何减少冲突?

把自己的代码全部放在自己唯一定义的空间名字中,降低全局命名冲突的问题

//唯一全局变量
var xxx = {};
//定义全局变量
xxx.name = 'xian';
xxx.add = function (a,b){
 return a + b;
}

3.2.2、局部作用域 let

function f() {
 for (var i = 0; i < 100; i++) {
    console.log(i);
  }
  console.log(i + 1);
}

出现问题:i可以在for作用域外使用

解决:ES6中引入 let 关键字,解决局部作用域冲突问题

function f() {
 for (let i = 0; i < 100; i++) {
    console.log(i);
    }
 console.log(i + 1);//Uncaught ReferenceError: i is not defined
}

建议使用let关键字去定义局部作用域的变量

3.2.3、常量 const

在ES6之前,定义常量方式: 只要是大写字母命名的就是常量;建议不要修改这样的值

var PI = '3.14';
console.log(PI);
PI = '3322';//可以修改这个值
console.log(PI);

在ES6引入了关键字const

const定义的量为常量,不可以更改

3.3、方法

3.3.1、定义方法

方法就是把函数放在对象里,对象只有:属性和方法,方法一定要带()

var xian = {
  name : '奚',
  birth : 2020,
  //方法
  age : function (){
        let number = new Date().getFullYear() - this.birth;
  console.log(number)
    }
}
xian.age();

将上面的代码拆开,等于:

function getage(){
  let number = new Date().getFullYear() - this.birth;
  return number;
}
  var xian = {
      name : '奚',
  birth : 2020,
  //方法
  age : getage
}

this是无法指向的,是默认指向调用它的那个对象

3.3.2apply

在JS中,可以控制This的指向

function getage(){
  let number = new Date().getFullYear() - this.birth;
  return number;
}
var xian = {
      name : '奚',
  birth : 2020,
  //方法
  age : getage
}

getage.apply(xian,[]);//this指向了 xian,参数为空

4、内部对象

标准对象

typeof 121
'number'
typeof'12'
'string'
typeof[]
'object'
typeof{}
'object'
typeof true
'boolean'
typeof NaN
'number'
typeof Math.abs
'function'
typeof undefined
'undefined'

4.1、Date对象

基本使用

let date = new Date();//Sun Apr 03 2022 13:19:54 GMT+0800 (中国标准时间)
date.getFullYear();//年
date.getMonth();//月
date.getDate();//日
date.getDay();//星期几
date.getHours();//时
date.getMinutes();//分
date.getSeconds();//秒

date.getTime();//时间戳  全世界统一 1970年1月1日 0:00:00 到现在的毫秒数
console.log(new Date(1648963194746));//时间戳转为时间

转换 (注意:调用的是方法不是属性)

console.log(new Date(1648963194746))
VM155:1 Sun Apr 03 2022 13:19:54 GMT+0800 (中国标准时间)
undefined
date.toDateString()
'Sun Apr 03 2022'
date.toTimeString()
'14:19:43 GMT+0800 (中国标准时间)'

4.2、JSON

JSON是什么

早期,所有数据传输习惯使用XML文件!

  • JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。
  • 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。
  • 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

在JavaScript一切皆为对象,任何JS支持的类型都可以使用JSON来表示

格式:

  • 对象都用{}
  • 数组都用[]
  • 所有的键值对都是用 key:value

JSON字符串和对象的转换

var user = {
   name : "xxx",
   age : 18,
   sex : '男'
}

//对象转换为Json字符串
let s = JSON.stringify(user);

//将JSON字符串转化为对象,参数为JSON字符串
let s1 = JSON.parse(s);

JSON和JS的区别

var obj = {a:'hello',b:'word'}
var json = {"a":"hello","b":"word"}

4.3、Ajax

  • 原生的JS写法 .xhr 异步请求
  • jQuey封装好的方法
  • axios 请求

5、面向对象编程

5.1、原型对象

面向对象语言:Java、JavaScript、c#....,其中,JavaScript有一些区别

  • 类:模板 原型
  • 对象:具体的实例

原型:

var Student = {
            name:'xian',
            age:3,
            run : function (){
                console.log(this.name+"run....")
            }
        };

        var xiaoming ={
            name: "xiaoming",
        };
        //小明的原型是 Student
        xiaoming.__proto__ = Student;//原型对象
        var Bird = {
            fly : function (){
                console.log(this.name+"fly....")
            }
        }

        //小明的原型是 Bird
        xiaoming.__proto__ = Bird;
function Student(name){
    this.name = name;
}

//给Student新增一个方法
Student.prototype.hello = function(){
    alert('Hello')
};

5.2、Class对象

Class关键字实在ES6引入的

  1. 定义一个类,属性和方法

    //定义一个学生类
    Class Student{
    	constructor(name){//构造方法
    	this.name = name;
    	}
    	hello(){
    		alert('hello')
    	}
    }
    
    var xiaoming = new Student("xiaoming");
    var xiaohong = new Student("xiaohong");
    
    xiaoming.hello()
    
  2. 继承

    Class XiaoStudent extends Student{
        constructor(name,grade){
            super(name);
            this.grade = grade;
        }
        
        myGrade(){
            alert("我是一名小学生")
        }
        
    }
    
    var xiaohong = new Student("xiaohong",1);
    

    本质:查看对象原型

原型链

__ proto__:

6、操作BOM对象(重点)

6.1、浏览器介绍

JavaScript和浏览器的关系

​ JavaScript的诞生就是为了能够让他在浏览器中运行!

BOM:浏览器对象模型

  • IE 6~11
  • Chrome
  • Safari
  • FireFox

三方

  • QQ浏览器
  • 360浏览器

6.2、window对象

window对象代表浏览器窗口

window.alert(1)
window.innerHeight
window.innerwidth

6.3、navigator

大多数时候,不会使用这个方法,因为会被人为修改

不建议使用这些方法判断和编写代码

navigator,封装了浏览器的信息

navigator.appName
'Netscape'
navigator.appVersion
'5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.55'
navigator.userActivation
UserActivation {hasBeenActive: true, isActive: true}
navigator.userAgent
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.55'
navigator.platform
'Win32'

6.4、screen

代表屏幕尺寸

screen.width
1536 px
screen.height
864 px

6.5、location(重要)

location 代表当前页面的URL信息

host:"www.baidu.com"
href:"https://www.baidu.com/"
protocol:"https"

reload:f reload()//刷新网页
//设置新的地址,跳转新的地址
location.assign('网址')

6.6、document

document当前页面的信息,HTML DOM文档数

document.title
"百度一下,你就知道"
document.title = 'xian'
"xian"

获取具体的文档树节点

<dl id="xx">
    <dt>java</dt>
    <dd>JavaSE</dd>
    <dd>JavaEE</dd>
</dl>
<script>
    var id = document.getElementById('xx');

</script>

获取cookie,现在无法正常显示了

document.cookie
''

劫持cookie原理:

www.taobao.com

<script src="aa.js"></script>

服务器端可以设置cookie:httpOnly

6.7、history

代表浏览器的历史记录

history.back()//后退
history.forward()//前进

7、操作DOM对象(重点)

DOM:文档对象模型

7.1、核心

浏览器整个网页就是一个DOM树形结构

  • 更新:更新DOM节点
  • 遍历DOM节点:得到DOM节点
  • 删除一个DOM节点
  • 添加一个新的DOM节点

要操作一个DOM节点,必须先获得一个DOM节点

7.2、获得DOM节点

//对应CSS选择器
let h1 = document.getElementsByTagName('h1');
let p1 = document.getElementById('p1');
let p2 = document.getElementsByClassName('p2');
let father = document.getElementById('father');

var childers = father.children;//获取父节点下的所有子节点
//father.firstChild
//father.lastChild

7.3、更新节点

<div id="id1"></div>
<script>    
    let id1 = document.getElementById('id1');    
</script>

操作文本:

  • id1.innerText = '1231' 修改文本的值
  • id1.innerHTML = '1231' 可以解析HTML文本标签

操作JS:

  • id1.style.color = 'red'
    'red'
    

删除节点:

步骤

  1. 先获取父节点
  2. 通过父节点删除自己
//先获取自己
let id1 = document.getElementById('id1');
//获取父节点
let father = id1.parentElement;
//通过父节点删除自己
father.removeChild(p1);

//删除是一个动态的过程
father.removeChild(father.children[0])
father.removeChild(father.children[1])
father.removeChild(father.children[2])

注意:删除多个节点的时候,children[]是在时刻变化的,删除节点的时候需要注意!

7.4、插入节点

如果获取了某个节点,假设这个DOM节点是空的,我们可以通过innerHTML 就可以增加一个元素了,但是,若这个节点已经存在元素了,就无法使用这种方式进行操作,因为会产生覆盖。

7.4.1、追加

追加已有元素

<p id="js">JavaScript</p>
<div id="ls">
    <p id="se">JavaSE</p>
    <p id="ee">JavaEE</p>
    <p id="me">JavaME</p>
</div>
<script>
    let js = document.getElementById('js');
    let ls = document.getElementById('ls');
    ls.appendChild(js);//追加
</script>

创建新节点进行插入

<p id="js">JavaScript</p>
<div id="ls">
    <p id="se">JavaSE</p>
    <p id="ee">JavaEE</p>
    <p id="me">JavaME</p>
</div>
<script>
    let js = document.getElementById('js');//已存在的节点
    let ls = document.getElementById('ls');
    ls.appendChild(js);//追加
    //通过JS创建一个新的节点
    var newp = document.createElement('p');//创建一个p标签
    newp.id = 'newp';
    newp.innerText = 'hello';

    //创建一个标签节点
    let myScript = document.createElement('script');
    myScript.setAttribute('type','text/javascript');//通过这个属性可以设定属性任意的值
    
    //创建一个style标签
    let myStyle = document.createElement('type');//创建一个空style标签
    myStyle.setAttribute('type','text/css');
    myStyle.innerHTML = 'body{background-color: chartreuse}';//设置标签内容
    document.getElementsByTagName('head')[0].appendChild(myStyle)
    
    //加入到ls后
    ls.appendChild(newp)
</script>

insertBefore

let ee = document.getElementById('ee');
let js = document.getElementById('js');
let ls = document.getElementById('ls');

//ls要包含的节点 .insertBefore(newNode,targetNode)
ls.insertBefore(js,ee);

8、操作表单(验证)

表单是什么?form、DOM树

表单的目的:提交信息

8.1、获得提交的信息

<form action="post">
    <p><span>用户名:</span><input type="text" id="username"></p>
    <p>
<!--        多选框的值和单选框的值是写死的-->
        <span>性别:</span>
        <input type="radio" name="sex" value="男" id="boy">男
        <input type="radio" name="sex" value="女" id="girl">女
    </p>
</form>
<script>
    let input = document.getElementById('username');
    let boy = document.getElementById('boy');
    let girl = document.getElementById('girl');
    //得到输入的值
    input.value;
    //修改输入框的值
    input.value = '31';

    //对于单选框和多选框等等固定值,用value只能取得当前值
    boy.checked;//查看返回的结果是否为true

8.2、提交表单(MD5加密密码)

<head>
    <meta charset="UTF-8">
    <title>Title</title>

    //MD5工具类
    <script src="https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.min.js"></script>
<body>
<form action="post">
    <p><span>用户名:</span><input type="text" id="username" name="username"></p>
    <p><span>密码:</span><input type="password" id="password" name="password"></p>
<!--    onclick被点击-->
    <button type="button" onclick="aaa()">提交</button>
</form>

<script>
    function aaa() {
        let username = document.getElementById('username');
        let password = document.getElementById('password');
        console.log(username.value);
        //MD5加密算法
        password.value = md5(password.value);
        console.log(password.value);
    }
</script>

9、jQuery

JavaScript

jQuery库,里面存在大量的JavaScript函数

9.1、获取jQuery

//在线CDN
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>

9.2、jQuery使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<body>

<a href="" id="test-jQuery">点我</a>
<script>
    //选择器就是CSS选择器
    $('#test-jQuery').click(function () {
        alert('111')
    })
</script>
</body>
</html>

9.3、jQuery选择器

//原生js,选择器少,麻烦不好记
    //标签
    document.getElementsByTagName();
    //id
    document.getElementById();
    //类
    document.getElementsByClassName();

    //jQuery  css中的选择器全部都可以用
    $('p').click()//标签选择器
    $('#ip1').click()//id选择器
    $('.class1').click()//class选择器

文档工具站:

jQuery API 中文文档 | jQuery API 中文在线手册 | jquery api 下载 | jquery api chm (cuishifeng.cn)

9.4、事件

标签:function,console,log,前端,基础,let,var,document
From: https://www.cnblogs.com/xixiuxian/p/16629102.html

相关文章

  • JAVA基础-jar包和war包的区别
    转载:https://juejin.cn/post/7086099522903883790jar包:是与平台无关的文件格式,允许将多个文件组合成一个压缩文件,以zip文件格式为基础,不同的是jar文件不仅用域压缩和发布,......
  • python基础-函数的进阶
    python基础-函数的进阶 一.函数参数--动态传参之前我们说过了传参,如果我们需要给一个函数传参, 而参数又是不确定的.或者我给一个函数传很多参数,我的形参就......
  • python基础-练习题
    python基础-练习题 选择题: 1.如果变量x=3,那么,请选择x+=3结果为():62.在python解释器中,'a'+'b'+'1'的执行结果为():'ab1'3.python解释器中,执行int('11a')......
  • python基础 -列表,元组
    python基础-列表,元组  一.1.1列表的介绍列表是python的基础数据类型之一,其他编程语言也有类似的数据类型.比如JS中的数组,java中的数组等等.它是以[]括起......
  • pythton基础-字典
    pythton基础-字典    一.字典的简单介绍 字典(dict)是python中唯一的一个映射类型.他是以{}括起来的键值对组成.在dict中key是唯一的.在保存的时候,根......
  • python基础-is 和==的区别及编码和解码
    python基础-is和==的区别及编码和解码 is和==的区别 #a='alex@'#a1='alex@'#print(aisa1)#Fales#......
  • python基础-set集合,深浅拷贝
    python基础-set集合,深浅拷贝  一.基础数据类型补充补充给一个字符串基本操作 列表:循环删除列表中的每一个元素 分析原因:for的运行过程.会有一个......
  • python基础-函数
    python基础-函数 一.什么是函数1.我们到目前为止,已经可以完成一些软件的基础功能了.那么我们来完成这样一个功能:约会:  ok.soeasy.我们已经完成了对......
  • Golang入门基础1
    Golang入门基本的项目结构go的环境搭建比较简单就直接跳过了工程结构如下每一个go程序都需要依赖一个包现在写一个简单的程序packagemainimport"fmt"funcmain(......
  • FLTK基础 - 创建第一个窗口
    //Fl.H是必须包含的头文件#include<FL/Fl.H>#include<FL/Fl_Window.H>#include<FL/Fl_Box.H>intmain(intargc,char**argv){//创建一个窗口,接下来创建......