jQuery与AJAX应用(十五)

错误:

1、idea打不开,双击没反应的解决方案

 idea打不开,双击没反应的解决方案
 找到脚本
 jetbra-1126574a2f82debceb72e7f948eb7d4f616ffddf文件 —— jetbra文件——scripts文件——install-current-user.vbs

2、java: 错误: 不支持发行版本 19

 设置—— Settings ——Build, Execution, Deployment——Java Compiler

 

步骤:

一、安装

二、创建 JavaWeb项目

1、新建项目

File菜单——New——Project

2、添加WEB支持

设置——Project Structure(项目结构) —— Modules(模块)—— 选中项目 —— + —— web

3、配置Tomcat Web服务器

1)添加Tomcat: Select Run/Debug Configurations —— Tomcat Server —— Local —— Server —— Configurations —— Tomcat Home

2)添加 Tomcat 依赖 设置——Project Structure(项目结构) —— Modules(模块)—— 选中项目 —— Dependencies —— + ——Choose Libraries —— 选中Tomcat

4、编写代码

1)web:编写前端代码

2)src : 编写后端Java代码 编写 Util、Servlet程序

5、添加第三方的 jar 文件

1)web —— WEB INF —— 创建lib目录 —— 粘贴jar文件

2)设置——Project Structure(项目结构) —— Modules(模块)—— 选中项目 —— Dependencies —— + —— JARs or Directories ——选中jar文件

3)设置——Project Structure(项目结构)—— Artifacts —— + —— Web Application:Exploded ——From Modules(创建Artifact)——选中项目——Output Layout —— lib —— 如果Tomcat中没有jar文件,双击或右击,把jar文件发布到Tomcat中

6、把 Artifact 部署到 Tomcat中

Select Run/Debug Configurations —— Edit Configurations —— Deployment —— + —— Artifact 注意:部署成功后,一般需要修改项目的上下文路径

三、IDEA的设置

1、显示工具条

View —— Toolbar

2、解决Tomcat日志乱码

三个方法 1)寻找Tomcat所在的位置,在Tomcat目录下找到conf logging.properties —— 检查确保都是UTF-8编码

2)IDEA中JVM的虚拟机的编码方式设置为UTF-8 Help —— Edit Custom VM Options —— 添加 -Dfile.encoding=UTF-8

3)Tomcat配置 Select Run/Debug Configurations —— 选中Tomcat——Server—— VM options——添加-Dfile.encoding=UTF-8

3、过滤文件 设置—— Settings —— Editor —— File Types—— ignored Files and Folders —— + —— 添加 *.iml

前端开发三大基础知识

1、HTML:结构化页面 + 添加相关的网页内容(文字、图片、表格、表单)

语法一:双标记

<开始标记 属性1="值" ... 属性N="值"> ​ 内容 ​ </结束标记>

 <font size="7" color="red" align="center">
    好好学习,天天向上
 </font>

语法二:单标记

<开始标记 属性1="值" ... 属性N="值"/>

 


..

说明: 1)标记也叫标签 2)不同的标记都会有默认的样式 3)不同的标记都会有相应的属性,用于丰富标记的样式 4)编写网页,就是定义各个标记,并保存为一个以html为后缀的文件 5)各个标记存在以下几个关系 兄弟关系(并列关系) 父子关系(嵌套关系) 6)最后,学习并熟悉各个标记以及其属性

2、CSS :修饰网页内容,让网页更加漂亮、专业、人性化、增强可操作性

在CSS中,提供了非常丰富的属性,便于开发者修改网页内容 ​ 每个属性可以理解某种颜色。

语法: 选择器 { 属性1:属性值 ; ... 属性N:属性值 ; }

注意:在CSS中,同时也提供了非常丰富的选择器,便于选中页面的内容

使用方式

1)内联式

作用范围:作用于当前的标记 ​ 优势:优先级最高 ​ !important -> 提高优先级

<开始标记 style="属性1:值;...;属性N:值"> ​ 内容 ​ </结束标记>

2)嵌入式

作用范围:作用于当前的网页

 <style>
    选择器 {
        属性1:属性值 ;
        ...
        属性N:属性值 ;
    }
 </style>

3)外部式

作用范围:作用于当前整个网站(一个网站下包含多个网页) ​ 一次定义,多处的使用 ​ 实现css和html的分离,提高代码的维护性

操作步骤:

第一:创建一个以css为后缀的文件
第二:在css文件中,定义相关的样式

选择器 { ​ 属性1:属性值 ; ​ ... ​ 属性N:属性值 ; ​ }

第三:在页面中引入css文件

<link href="路径/xxx.css" type="text/css" rel="stylesheet"/>

路径:相对路径(常用)、绝对路径

 

导入式

作用:合并多个样式(样式文件)

最后,学习并熟悉各个CSS属性

 

3、JavaScript

实现页面的动态效果,增强人机的交互性,让用户的体验更加的好 实现表单数据合法性的验证

最后,学习并熟悉具体的JS语法

用法

1)内联式
2)嵌入式
 <script>
    // js代码,只作用于当前页面
 </script>
3)外部式

作用范围:作用于整个网站 ​ 好处:实现js和html的分离,提高代码的维护性

第一:创建一个以js为后缀的文件

 

第二:编写js代码

根据需求编写代码

第三:在页面中,引入js文件
     <script src="路径/xxx.js" type="text/javascript"></script>

注意:在引入js的script标签中,不要编写js代码

4、在三剑客中,一般我们的开发步骤为

第一:使用HTML结构化页面

第二:使用CSS美化页面

第三:使用JS实现页面的动态效果

5、DOM操作

1)DOM(Document Object Model) - 文档对象模式 - 操作文档的相关对象集合

程序使用 DOM 可以对网页中的内容进行操作(增、删、改、查)

在DOM中,HTML页面中所有的内容都称之为节点,主要有以下几种: 元素节点(1):font 属性节点(2):color、size 文本节点(3):好好学习

好好学习

 

2)操作步骤

第一:选择要操作的节点(内容)

document.getElementById(): ​ 根据ID属性获取页面中唯一的节点

document.getElementsByName(): ​ 根据 name 属性获取页面中的节点集合(数组)

document.getElementsByTagName(): ​ 根据标签名称获取页面中的节点集合(数组)

document.getElementsByClassName(): ​ 根据 class 属性获取页面中的节点集合(数组)

注意:节点与节点之间存在以下关系 ​ 父子关系(嵌套关系) ​ 兄弟关系(并列关系)

有时候,我们选择节点时, ​ 需要通过这些关系来间接的选择某些节点

通过关系获取节点的API有以下几个:

1)父节点

parentNode:获取当前节点的父节点(唯一) ​ parentElement:获取当前节点的父元素节点(唯一)

2)子节点

childNodes:获取当前节点的子节点(0个或多个)

firstChild:获取当前节点的第一个子节点 ​ lastChild:获取当前节点的最后一个子节点

firstElementChild:获取当前节点的第一个元素子节点 ​ lastElementChild:获取当前节点的最后一个元素子节点

大坑:在HTML代码中,回车换行也是一个文本节点

3)兄弟节点

previousSibling:获取当前节点的上一个节点(哥哥) ​ nextSibling:获取当前节点的下一个节点(弟弟)

previousElementSibling:获取当前节点的上一个元素节点(哥哥) ​ nextElementSibling:获取当前节点的下一个元素节点(弟弟)

 

4)属性节点

attributes:获取当前节点的属性节点集合

 

第二:使用节点相关的属性和方法进行相关的操作

注:节点是一个对象

3)DOM操作的相关方法 -- 实现页面内容的“动态”更新 - ajax

元素节点对象.setAttribute("属性名称","属性值"): ​ 给某个元素节点,动态的添加属性和属性值

元素节点对象.removeAttribute("属性名称"): 移除某个元素节点的指定属性

var 变量 = 元素节点对象.getAttribute("属性名称"): 获取某个元素节点的指定属性的属性值

document.createElement("标签名称"):创建元素节点

document.createTextNode("文本内容"):创建文本节点

元素节点对象.createAttribute("属性名称"):创建属性节点

父元素节点对象.appendChild(节点对象):添加子节点(父子) 父元素节点对象.insertBefore(新节点,目标节点):添加新节点在目标节点之前(兄弟)

var 克隆的节点对象 = 元素节点对象.cloneNode(bool):克隆节点(复制节点)

removeChild(childName):移除节点 replaceChild(newChild,oldChild):替换节点,把 oldChild替换为newChild

 

最后,自学一下emmet语法:提高 编写 HTML 和 CSS 效率。 https://docs.emmet.io/abbreviations/syntax/ https://www.jianshu.com/p/5416e3315f6e


JQuery

一、概述

JQ是对原生 JavaScript 代码封装的JavaScript库 ;

特点:快速、小巧、功能丰富 ;

口号:写更少的代码,做得更多的功能 ;

归根到底,JQ 还是 JavaScript!

二、使用

1、下载

官网:http://jquery.com

● 未压缩:jquery-1.12.4.js,容量大,加载速度相对比较慢,一般用于学习或需要查看源码 ● 压缩:jquery-1.12.4.min.js ,容量小,加载速度快,一般应用在生产环境下

2、各版本的JQ

● 1.x版本:兼容ie678,使用最为广泛的,官方只做bug维护,功能不再新增。因此一般项目来说,使用1.x版本就可以了,最终版本:1.12.4 ● 2.x版本:不兼容ie678,很少人使用,官方只做bug维护,功能不再新增。如果不考虑兼容版本低的浏览器可以使用2.x,最终版本:2.2.4 ● 3.x版本:不兼容ie678,只支持最新的浏览器。除非特殊要求,一般不会使用3.x版本的,很多老的jQuery插件不支持这个版本。目前该版本是官方主要更新维护的版本。目前最新版本:3.5.1

3、操作步骤

第一:在 HTML 页面中,引入 js 文件

第二:使用 JQ

说明: JQ是对原生 JavaScript 代码的封装 ; 它提供非常丰富的API给程序员使用,使编写代码时更加的简单、高效 ;

注意: 后面我们要学习的是 JQ 提供的各种 API(对象及相关的方法)

 

三、窗体加载 VS 文档加载

1、语法不同

 window.onload = function() {
 }
 
 $(document).ready(function(){
 
 }) ;

2、执行时机不同

前者必须等待网页中所有的内容加载完毕后(包括图片)才能执行;

后者是在网页所有DOM元素载入就绪时就执行(可能DOM元素关闭的东西并没有加载完,如图片)。

3、编写个数不同

前者不能同时编写多个,否则后面的会替换前面的;

后者可以编写多个,会执行多个。

4、简化写法

前者没有简写;

后者可简写

 $(function(){
 
 }) ;

​ $(document).ready(function(){ ​ }) ;

四、原生JS对象和JQ对象

1、原生 DOM 对象

通过JavaScript中的DOM API操作获得的元素对象,如document.getElementById...

2、JQquery对象

通过JQuery包装Dom对象后产生的对象,$(dom对象)、$(选择器)

注意: DOM对象和JQuery对象只能各自访问自己的方法; JQ对象一般比原生对象更加强大或操作方便,它经过了JQ的二次封装

3、DOM对象与JQuery对象的相互转换

1)Jquery对象 转换为 DOM对象 方法一: var 原生DOM对象 = JQ对象[下标] ;

方法二: var 原生DOM对象 = JQ对象.get(下标) ;

2)DOM对象 转换为 Jquery对象

var JQ对象 = $(原生DOM对象)

五、基本选择器

1、选择器

选择页面中要操作的节点对象; ​ 在JQ中,和CSS一样,也提供了非常多的选择器,便于选择要操作的节点对象

2、分类

1)ID选择器

语法:$("#ID名称") ​ 特点:返回唯一的一个节点对象

2)类选择器

语法:$(".Class名称") ​ 特点:可能返回多个节点对象,使用数组存储并返回

3)标记选择器

语法:$("标签名称") ​ 特点:可能返回多个节点对象,使用数组存储并返回

4)组合选择器

语法:$("S,S,...,S"),其中S表示其它选择器 ​ 特点:可能返回多个节点对象,使用数组存储并返回

5)通配选择器

语法:$("*") ​ 特点:可能返回多个节点对象,使用数组存储并返回

六、包装集管理

1、概念

包装集就是一个存储多个JQ对象的数组

2、常用API方法 -- 增强选择

1.获取包装集的容量大小

包装集对象.length ​ 包装集对象.size()

2.返回包装集某个子元素的下标索引

var index = 包装集对象.index(子对象);

3.把匹配的内容,添加到包装集中

包装集对象.add(JQ对象或包装集)

4.排除

包装集对象.not(JQ对象或包装集)

5.过滤

包装集对象.filter(JQ对象或包装集|回调函数) ;

    包装集对象.filter(function(index){
        return 条件 ;
    }) ;

 

6.slice(start[,end]):返回下标索引从 start 开始,到 end 结束的元素集合

原则: ​ 下标索引从0开始 ​ 包头不包尾

将匹配元素集合缩减为指定范围的子集。


JQuery DOM操作

一、DOM概念

DOM,文档对象模式。它是一些API对象或方法的集合, ​ 程序员使用这些API对象或方法可以很方便的对网页中的内容进行 ​ 增、删、改、查的操作。

二、分类

原生JavaScript的DOM操作 ​ JQuery的DOM操作 - 更加方便、简单、高效

三、具体操作 - 就是学习JQ提供的对象(方法或属性)

1、节点操作

1)创建节点

语法:$(html)

$(html)方法会根据传入的html标记字符串,创建一个DOM对象, ​ 并将此DOM对象包装成JQuery对象后返回。

2)插入节点
2.1)以父子关系的方式添加

以最后一个子元素的方式添加 ​ 父节点.append(子节点) ​ 子节点.appendTo(父节点)

以第一个子元素的方式添加 ​ 父节点.prepend(子节点) ​ 子节点.prependTo(父节点)

2.2)以兄弟关系的方式添加

哥哥节点.after(弟弟节点) ​ 弟弟节点.insertAfter(哥哥节点) ​ before() ​ insertBefore()

3)删除节点

● remove():还支持选择性删除,如$("ul li").remove("li[title!=one]") ; ​ ● detach():与 remove() 相同,但删除节点的事件,附加数据等会保留下来。 ​ ● empty():清空节点,包括此节点的所有后代节点

4)复制节点

clone(true | false):复制节点,可传boolen值,若为真,则该节点的事件也被复制

5)替换节点
    replaceWith()
    replaceAll()

6)包裹节点:将某个节点用其他标记包裹起来。
    wrap():将各个匹配的元素使用某个元素来包裹
    wrapAll():将所有匹配的元素用一个元素来包裹
    wrapInner():子元素被包裹

 

2、属性操作

prop() / removeProp() - 一般用于操作原生属性 ​ attr() / removeAttr() - 一般用于操作扩展属性

<font color="red" size="7" face="隶书" xxx="yyy"></font> 其中,font标签的原生属性有:color、size、face 扩展属性有:xxx

1)设置属性

元素节点.prop("属性名称","属性值"); ​ 元素节点.attr("属性名称","属性值");

2)获取属性值

var 属性值 = 元素节点.prop("属性名称"); ​ var 属性值 = 元素节点.attr("属性名称");

3)删除属性

元素节点.removeProp("属性名称"); ​ 元素节点.removeAttr("属性名称");

3、样式操作

1)设置样式

prop() / attr() ​ css()

2)追加样式

addClass(类名)

3)移除样式

removeClass(类名)

4)切换样式

toggleClass(类名)

5)判断是否含有某个样式

hasClass("类名")

4、内容操作

1)设置内容

元素节点.text("内容") ; // 是纯文本内容,innerText ​ 元素节点.html("内容") ; // 可以包含HTML,innerHTML

2)获取内容

var 变量 = 元素节点.text() ; ​ var 变量 = 元素节点.html() ;

5、表单操作

1)设置 value 属性值

元素节点.val(值) ;

2)获取 value 属性值

元素节点.val() ;

 

6、遍历节点

1)children()

获取匹配元素的子元素集合

2)next([selector])

获取匹配元素后面紧邻的同辈元素

对比:prev + next

3)nextAll([selector])

获取匹配元素之后所有的同辈元素

对比: prev ~ siblings

4)prev([selector])

获取匹配元素前面紧邻的同辈元素

5)prevAll([selector])

获取匹配元素之前所有的同辈元素

6)siblings([selector])

获取匹配元素前后氖的同辈元素

7)parent([selector])

获取匹配元素的上一级父元素

8)parents([selector])

获取匹配元素的父元素,包括所有的祖先元素

9)closest()

从元素本身开始,逐级向上级元素匹配,并返回最先匹配的元素

10)slice(start,[end])

获取匹配元素,下标索引从start到end的子集。

● slice(n):获取匹配元素下标索引从0到n的子集 ● slice(start,end):获取匹配元素下标索引从start到end的子集 ● slice(-n): 获取匹配元素下标索引从末尾开始选择到n的子集

事件与动画

一、概念

浏览器在打开到关闭的这个过程中, ​ 用户在浏览器所做的操作就是事件。

在 PC 端中,事件主要有以下三大类:

1.鼠标事件

单击(onclick) ​ 双击(ondblclick) ​ 经过(onmouseover) ​ 离开(onmouseout) ​ 移动(onmousemove) ​ 滑轮(onwheel) ​ ...

2.键盘事件

键盘按下(onkeydown) ​ 键盘弹起(onkeyup) ​ ...

3.窗体事件

加载事件(onload) ​ ...

响应:每一个事件的背后都会有相应响应,一般我们使用函数来实现 也就是说:每个事件的背后都有一个函数

目标对象:事件所作用的对象

二、绑定事件

1、bind(type,[data],fn)

type:表示事件的类型,在原生事件属性中去除on,click ​ data:表示数据 ​ fn:事件背后的函数

元素节点.bind(事件类型,function(){

}) ;

2、on(events,[selector],[data],fn)

可以给动态创建的节点绑定事件

父元素节点.on(事件类型,动态生成的节点,function(){
})

3、one(type,[data],fn)

4、简写绑定事件

元素节点.事件方法(function(){
}) ;

三、解绑事件

1、unbind() -- bind

2、off() -- on

四、合成事件

在JQ中,提供了一些API方法,把多个事件合成在一起,便于用户使用

1.hover :合成鼠标经过和离开
    元素节点.hover(鼠标经过,鼠标离开) ;

2、toggle() : 合成显示和隐藏

3、trigger("事件类型") :事件触发

五、事件对象

1、概念

事件对象(event)对所有事件的概括或描述 ​ 事件对象必须存在相关的属性和方法,可以对事件进行相关的操作

张三 李四 - 具体事件,如单击、双击

学生          -          事件对象

2、事件对象常用的属性和方法

目标对象:事件所作用的对象

目标对象:event.target

鼠标相对页面的坐标:event.pageX/eveng.pageY

鼠标的键类型:event.which

阻止事件冒泡:event.stopPropagation()

阻止默认行为:event.preventDefault()

课堂练习: 实现右键单击,弹出自定义菜单!

六、动画相关操作

1、动画基础相关的方法

width() / height()

offset()

position()

scrollTop()/scrollLeft()

2、常用动画

3、自定义动画

七、创建对象 - 文件标记法 - JSON格式的字符串 - 数据传输

var 对象名称 = {
        属性名称1 : 值,
        ...
        属性名称N : 值
    } ;

其中,值可以是任意数据类型 数值型 - 整数、浮点数 布尔型 - true | false 字符串 - "字符串" | '字符串' undefined null 数组 - [值1,...,值N] 对象 - {}

函数 - function() {}

复习

1.JQuery基本操作 - ch01 - ch05

ch01 - 入门 - 原生JS对象,JQ对象,$(),包装集(数组)

ch02 - 选择器 - 选择要操作的“节点”

ch03 - DOM(文档对象模式) - API对象(方法、属性)

ch04 - 事件 - 浏览器 - 动画

ch05 - 常用工具 - 常用方法

2.Ajax实现异步操作 - ch06(重点)

3.前端框架-BootStrap(BS) - ch07

常用工具方法

注意:工具方法都是使用$(工厂对象)访问,语法:$.xxxx() ;

1、$.trim(数据) :去除左右空格

2、$.isArray(数据) :判断数据是否为数组

3、$.isFunction() : 判断数据是否为函数

4、[var 对象 = ]$.extend(对象1,对象2,...对象N) : 扩展对象

把第二个参数到最后一个参数的对象,扩展到第一个参数的对象中 ​ 另外,extend方法返回最终扩展的对象 ​ 但一般直接使用第一个参数的对象 ​ 说明:在JQ自定义插件中,需要使用到此方法

5、$.getScript("路径/xxx.js") : 动态加载脚本(JS)

注意:必须在WEB服务器(Tomcat)下运行 ​ 安装插件:live server

6、$.each - 遍历数组或对象

1)遍历数组

$.each(数组名称,function(下标,元素){ ​ }) ;

2)遍历对象

$.each(对象名称,function(属性名称,属性值){ ​ }) ;

课堂练习: ​ 姓名 年龄 性别 班级 成绩 ​ ... ​ ... ​ ...

要求: ​ 1)把数据封装为对象 ​ 2)定义三条数据(三个对象),使用数组存储 ​ 3)加载数据按钮绑定单击事件 ​ 4)循环遍历数组,在表格中添加三行,并添加相应的数据

7、$.grep() - 过滤数组

$.grep(数组名称,function(数组元素,下标索引){

}) ; ​ 区别: ​ filter() - 过滤包装集(数组-JQ对象) ​ $.each()

8、$.inArray() - 查找数组是否存在某个元素,并返回下标,不存在则返回-1

var 下标 = $.inArray("查找内容",数组)

常用操作(补充)

1、is - 匹配元素

根据选择器、DOM元素或 jQuery 对象来检测匹配元素集合, ​ 如果其中至少有一个元素符合这个给定的表达式就返回true, ​ 否则返回false

 

2、map - 将一组元素转换成其他数组(不论是否是元素数组)

3、has - 判断是否拥有指定后代元素

4、end - 回到最近的一个"破坏性"操作之前。即,将匹配的元素列表变为前一次的状态。

5、find(向下找) VS closest(向上找)

 

 

IDEA的基本使用

一、 安装

二、 创建Java项目

1、 新建项目

File菜单 New Project

 

 

2、 打开项目的方式

 

 

3、 编写代码

创建包、接口、类

 

4、 运行程序

右键 Run …

 

三、创建 JavaWeb项目

1、创建 Java 项目(同上)

 

2、添加WEB支持

选中项目 Project Structure(项目结构) Modules(模块)

 

 

3、编写代码

src : 编写后端Java代码(接口、类、Servlet) à 实现业务逻辑

web:编写前端代码(html、css、js、JQuery、LayUI、BootStrap、Vue、Vant、…)à 用户可操作的界面(漂亮、体验好、操作方便) à 等同于Eclipse中的WebApp

 

注意:此时不能编写Servlet代码(继续往下操作)

 

4、配置Tomcat Web服务器

1)编辑配置

 

 

2)添加Tomcat

 

 

3)配置 Tomcat 安装目录

 

 

4)添加 Tomcat 依赖

 

5)编写 Servlet程序

6)创建Artifact

 

 

7、把 Artifact 部署到 Tomcat中

 

 

注意:部署成功后,一般需要修改项目的上下文路径

 

 

四、IDEA的设置

1、显示工具条

 

 

作业:

1、使用纯的HTML+CSS实现以下效果

1)鼠标经过左图时,显示的效果如右图所示,鼠标离开还原

2)其中“粉色背景”有动画效果,缓缓的向上移动

3)小红点定位在右上角

 

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>练习一</title>
 
     <style>
         #father {
             width:250px;
             height: 140px;
             overflow: hidden;
           
             
             /*
                相对定位:相对于当前元素的位置定位
                一般结合:left、right、top、bottom属性使用
                卡位
            */
             position: relative;
 
        }
 
         img {
             width: 250px;
        }
 
         #title {
             background-color: pink;
             color:yellow;
             text-align: center;
             height: 30px;
             width:250px;
             /* 行高 = 高时,内容就垂直居中 */
             line-height: 30px;
 
             /*
                绝对定位:相对于父元素定位(条件:最近的父元素 + 使用了position属性修饰)
                一般结合:left、right、top、bottom属性使用
            */
             position:absolute;
             left:0;
             bottom:-30px;
 
 
             /*
                过渡(transition):通过属性过渡实现动画效果
                语法:transition:过渡属性 持续时间 动画类型 延迟
                用法:谁需要过渡就定义在哪里!
            */
 
             transition:transform 0.2s ease-out
           
             
        }
 
         #dot {
             width: 20px;
             height: 20px;
             border-radius: 50%;
             background-color: red;
 
             position: absolute;
             right: -20px;
             top:15px;
 
             opacity: 0;
 
             transition:all 0.2s ease-out
        }
 
 
         /*
            实现鼠标经过,显示标题和小圆点  
        */
 
         #father:hover #title{
             
             transform:translateY(-29px)
        }
 
         #father:hover #dot{
             
            opacity: .8;
            transform:translateX(-35px)
        }
     </style>
 </head>
 <body>
     <div id="father">
         <img src="images/default.jpg"/>
         <div id="title">美女一枚</div>
         <div id="dot"></div>
     </div>
 </body>
 </html>

 

2、实现简单的计算器,使用event对象

 

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>练习二</title>
 
     <style>
         .text {
             color:blue
        }
     </style>
 
 
 
 </head>
 <body>
     <span class="text">数值1:</span>
     <input type="text" id="num1"/><p/>
 
     <span class="text">数值2:</span>
     <input type="text" id="num2"/><p/>
 
     <button onclick="aa()">+</button>
     <button onclick="aa()">-</button>
     <button onclick="aa()">*</button>
     <button onclick="aa()">/</button><p/>
 
     <span style="color:red">结果为:</span>
     <input type="text" id="result"/>
 
     <script>
         function aa() {
             // event:事件对象,是JS提供的对象,封装了当前事件的相关信息
             var btn = event.target ;
 
             // text = +、-、*、/
             var text = btn.innerText;
 
             // 获取文本框中输入的数据
             var num1Value = document.getElementById("num1").value ;
             var num2Value = document.getElementById("num2").value ;
             var resultNode = document.getElementById("result") ;
 
             switch(text) {
                 case '+':
                     resultNode.value = num1Value*1 + num2Value*1;
                     break ;
                 case '-':
                     resultNode.value = num1Value - num2Value;
                     break ;
                 case '*':
                     resultNode.value = num1Value * num2Value;
                     break ;
                 case '/':
                     if(num2Value==0) {
                         resultNode.value="除数不能为零" ;  
                         return;
                    }
                     resultNode.value = num1Value / num2Value;
                     break ;
 
            }
        }
 
 
     </script>
 </body>
 </html>

 

3、制作一个表格

 

要求:

1)参考上图设计页面

2)“添加/修改”按钮默认为”添加”按钮,输入学生相关信息,实现添加功能

3)单击删除按钮,删除当前行的数据

4)双击某行数据,数据回显在表单中,并且把“添加/修改”按钮设置为“修改”,实现修改当前行的数据。

5)输入学号,实现查询学生信息,把查找到数据所在的行设置背景颜色为红色,没找到,则弹出窗口显示“查无此人”

html

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>练习三</title>
     <link rel="stylesheet" href="liangxi03.css" type="text/css">
     
 </head>
 <body>
    学号:<input type="text" id="xueHao" class="txt"/>
    姓名:<input type="text" id="xingMing" class="txt"/>
    年龄:<input type="text" id="nianLing" class="txt"/><p/>
    班级:<input type="text" id="banJi" class="txt"/>
    性别:
         <input type="radio" name="xingBie" value="男" checked/>男
         <input type="radio" name="xingBie" value="女"/>女
     <button type="button" id="btnAdd">添加</button>
     <button type="button" id="btnClear" onclick="qingKong()">清空</button>
 
     <hr/>
 
    请输入学号:<input type="text" id="searchXueHao"/>
     <button type="button" id="btnSearch" onclick="search()">查询</button>
     <p/>
 
 
     <table border="1" width="60%">
         <tbody id="tbl">
             <tr>
                 <th>学号</th>
                 <th>姓名</th>
                 <th>年龄</th>
                 <th>班级</th>
                 <th>性别</th>
                 <th>操作</th>
             </tr>
             <tr ondblclick="selectDate()">
                 <td>1001</td>
                 <td>张三</td>
                 <td>18</td>
                 <td>S186</td>
                 <td>男</td>
                 <td>
                     <button onclick="delStu()">删除</button>
                 </td>
             </tr>
             <tr ondblclick="selectDate()">
                 <td>1002</td>
                 <td>李四</td>
                 <td>19</td>
                 <td>S187</td>
                 <td>女</td>
                 <td>
                     <button onclick="delStu()">删除</button>
                 </td>
             </tr>
         </tbody>
     </table>
 
     <!-- 通常,js导入放在 body 结束标签上面 -->
     <script src="liangxi03.js" type="text/javascript"></script>
 </body>
 </html>

css

 table {
     border-collapse:collapse;
     border: 2px double red;
 }
 
 table tr:nth-child(1) {
     background-color: black;
     color: white;
 }
 
 table tr td,th {
     text-align: center;
     border: 1px dotted blue;
 }
 
 .select {
     background-color: yellow;
     color: red;
 }

js

 /**
  * 清空表单
  */
 function clearDefault() {
    // 第一:选择要操作的节点
    var txtNodes = document.getElementsByClassName("txt")
 
    // 第二:使用节点的属性、方法进行相关的操作
    // 1.清空文本框
    for(var i=0;i<txtNodes.length;i++) {
         txtNodes[i].value = "" ;
     }
 
     // 2.让第一个文本框聚焦
     txtNodes[0].focus() ;
 
     // 3.把性别设置默认选择男
     // var nanNode = document.getElementsByName("xingBie")[0];
     // nanNode.checked = true ;
     document.getElementsByName("xingBie")[0].checked = true ;
 
     // 4.把学号文本框还原为可写
     document.getElementById("xueHao").readOnly = false ;
 
     // 5.清空选中行
     var tbody = document.getElementById("tbl");
     clearSelectStyle(tbody);
 }
 
 /**
  * 清除选中行的样式
  */
 function clearSelectStyle(tbody) {
     // 获取 tbody 下的所有行
     var trs = tbody.rows;
 
     // 循环遍历各行
     for(var i=0;i<trs.length;i++) {
        // 删除行的class属性值(select)
        trs[i].removeAttribute("class") ;
    }
 }
 
 /**
  * 添加数据
  */
 function addDate() {
    // 第一:选择要操作的节点
    var tableNode = document.getElementById("tbl") ;
 
    // 第二:使用节点的属性、方法进行相关的操作
    // 1.创建 tr 节点,同时绑定双击事件
    var trNode = document.createElement("tr") ;
    trNode.setAttribute("ondblclick","selectDate()") ;
 
    // 2.创建 td 节点
    var td1Node = document.createElement("td") ;
    var td2Node = document.createElement("td") ;
    var td3Node = document.createElement("td") ;
    var td4Node = document.createElement("td") ;
    var td5Node = document.createElement("td") ;
    var td6Node = document.createElement("td") ;
 
    // 3.获取文本框中输入的内容
    var stuNo = document.getElementById("xueHao").value ;
    var stuName = document.getElementById("xingMing").value ;
    var stuAge = document.getElementById("nianLing").value ;
    var stuClass = document.getElementById("banJi").value ;
    var radioNode = document.getElementsByName("xingBie")[0] ;
    var stuSex = radioNode.checked ? "男" : "女";
 
    // 4.创建删除按钮节点,并设置文本内容和单击事件
    var delNode = document.createElement("button") ;
    delNode.innerText = "删除";
    delNode.setAttribute("onclick","delStu()") ;
 
 
    // 5.把文本框中的内容,依次设置在 td 节点中
    td1Node.innerText = stuNo;
    td2Node.innerText = stuName;
    td3Node.innerText = stuAge;
    td4Node.innerText = stuClass;
    td5Node.innerText = stuSex;
    // 注意:最后一个单元格,以子节点的方式添加上面创建的删除按钮
    td6Node.appendChild(delNode) ;
 
    // 6.把各个 td 节点,添加到 tr 节点中
    trNode.appendChild(td1Node) ;
    trNode.appendChild(td2Node) ;
    trNode.appendChild(td3Node) ;
    trNode.appendChild(td4Node) ;
    trNode.appendChild(td5Node) ;
    trNode.appendChild(td6Node) ;
 
    // 7.把 tr 节点,添加到 table 节点中
    tableNode.appendChild(trNode) ;
 
 
    // 8.清空表单
    clearDefault() ;
 }
 
 /**
  * 修改数据
  */
 function updateDate() {
    // 第一:选择要操作的节点(对象)
    var xueHaoNode = document.getElementById("xueHao") ;
    var xingMingNode = document.getElementById("xingMing") ;
    var nianLingNode = document.getElementById("nianLing") ;
    var banJiNode = document.getElementById("banJi") ;
    var nvNode = document.getElementsByName("xingBie")[1] ;
 
     
   
    // 第二:使用节点对象的属性或方法实现相关的操作
    // 1.获取修改表单中的数据
    var xueHao = xueHaoNode.value ;
    var xingMing = xingMingNode.value ;
    var nianLing = nianLingNode.value ;
    var banJi = banJiNode.value ;
    var sex = "男" ;
    if(nvNode.checked) {
        sex = "女" ;
    }
 
    // 2.查询修改数据所在的行
    // 2.1)选择表格中的 tbody 节点
    var tableNode = document.getElementById("tbl") ;
 
    // 2.2)获取 tbody 节点下的所有行的集合(tr)
    var rows = tableNode.rows;
     
    // 2.3)循环遍历各行,进行查找
    for(var i=1;i<rows.length;i++) {
         // 2.4)获取各行中第一列的数据
         var firstCell = rows[i].cells[0].innerText;
         if(firstCell == xueHao) {
             // 2.5 修改操作
             rows[i].cells[1].innerText = xingMing ;
             rows[i].cells[2].innerText = nianLing ;
             rows[i].cells[3].innerText = banJi ;
             rows[i].cells[4].innerText = sex ;
             break ;
         }
     }
 
 }
 
 
 /**
  * 1.添加或修改数据
  */
 document.getElementById("btnAdd").onclick = function() {
 
     // 获取事件源对象,也就是用户单击的那个按钮
     var btn = window.event.target
 
     if(btn.innerText == "添加") {
         addDate() ;
     } else {
         updateDate() ;
     }
 }
 
 
 /**
  * 2.删除数据
  */
 function delStu() {
      // 第一:选择要操作的节点
      var tableNode = document.getElementById("tbl") ;
 
      // 第二:使用节点的属性、方法进行相关的操作
      // 1.获取删除按钮节点
      var delBtnNode = window.event.target;
 
      // 2.获取当前删除的那一行
      var trNode = delBtnNode.parentElement.parentElement;
 
      // 3.删除节点
      tableNode.removeChild(trNode) ;
 }
 
 /**
  * 3.把选择的当前行数据,回显在文本框中
  */
 function selectDate() {
     // 第一:选择要操作的节点
     var trNode = window.event.target.parentElement ;
 
     // 第二:使用节点的属性、方法进行相关的操作
     // 1.获取 tr 节点的所有 td 节点- 包含文本节点
     var tds = trNode.childNodes ;
 
     // 2.清除文本节点
     tds = clearTextNode(trNode,tds);
 
     // 3.获取各个 td 节点的内容
     var stuNo = tds[0].innerText ;
     var stuName = tds[1].innerText ;
     var stuAge = tds[2].innerText ;
     var stuClass = tds[3].innerText ;
     var stuSex = tds[4].innerText ;
 
     // 4.选中文本框节点并设置回显内容
     document.getElementById("xueHao").value = stuNo ;
     document.getElementById("xingMing").value = stuName ;
     document.getElementById("nianLing").value = stuAge ;
     document.getElementById("banJi").value = stuClass ;
 
     document.getElementsByName("xingBie")[0].checked = true ;
     if(stuSex == '女') {
         document.getElementsByName("xingBie")[1].checked = true ;
     
​ 
   // 5.设置修改按钮 
   document.getElementById("btnAdd").innerText = "修改"
​ 
   // 6.把学号的文本框设置为只读 
   document.getElementById("xueHao").readOnly = true
​ 
   // 7.把其它行的背景颜色还原为默认 
   var tbody = document.getElementById("tbl"); 
   clearSelectStyle(tbody)
​ 
   // 8.todo:当前行设置背景颜色 
   trNode.className = "select"
   // trNode.setAttribute("class","select")
    

/** 
* 删除文本节点  
*/ 
function clearTextNode(tr,trSons)
   for(var i=trSons.length-1;i>=0;i--) { 
      // 文本节点对应的数值为:3 
      if(trSons[i].nodeType==3) { 
          tr.removeChild(trSons[i]) 
      }  
  } 
  return tr.childNodes ; 

​ 
/** 
* 4.清空数据 
*/ 
function qingKong() { 
  clearDefault() ; 
  document.getElementById("btnAdd").innerText = "添加" ; 

​ 
​ 
function search() { 
  // 第一:选择要操作的节点 
  // 第二:使用节点的相关属性或方法进行操作 
​ 
  // 1.获取查询的学号 
  var searchXueHao = document.getElementById("searchXueHao").value ; 
​ 
  // 2.获取 tbody 下的各行集合(数组) 
  var tbody = document.getElementById("tbl") 
  var rows = tbody.rows; 
​ 
​ 
  // 3.循环遍历各行 
  // 定义标记(标识)变量 - 用户标识是否找到数据 
  var flag = false ; 
​ 
  for(var i=1;i<rows.length;i++)
       // 4.各行第一列的数据 
       var firstCell = rows[i].cells[0].innerText; 
​ 
       // 5.查找匹配 
       if(firstCell == searchXueHao)
           flag = true
​ 
           // 6.清空选中行的样式 
           clearSelectStyle(tbody)
​ 
           // 7.把找到数据的行设置选中样式 
           rows[i].className = "select"
           break
       }  
   
​ 
   if(flag==false)
       alert("查无此人【"+searchXueHao+"】"); 
   
}

4、定义按钮,绑定单击事件,实现以下需求(考虑多个方法的实现)

 <ul>
   <li class="workday">星期一</li>
   <li class="workday">星期二</li>
   <li class="workday">星期三</li>
   <li class="workday">星期四</li>
   <li class="workday">星期五</li>
   <li id="sat">星期六</li>
   <li id="sun">星期天</li>
 </ul>

1、返回li元素的数量

2、选择工作日对应的li节点,设置字体颜色为红色

3、选择奇数的星期对应的li节点,设置字体颜色为蓝、偶数的设置为黄色

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Document</title>
     <!-- 第一:导入 JQ 文件 -->
     <script src="js/jq/jquery-1.12.4.js" type="text/javascript"></script>
 </head>
 <body>
     <ul>
         <li class="workday">星期一</li>
         <li class="workday">星期二</li>
         <li class="workday">星期三</li>
         <li class="workday">星期四</li>
         <li class="workday">星期五</li>
         <li id="sat">星期六</li>
         <li id="sun">星期天</li>
     </ul>
 
     <div class="workday">好好学习</div>
 
     <button id="one">练习一</button>
     <button id="two">练习二</button>
     <button id="three">练习三</button>
 
 
     <script>
         $("#one").click(function(){
             var len1 = $("li").size() ;
             var len2 = $("li").length ;
 
             console.info(len1) ;
             console.info(len2) ;
        }) ;
 
 
         $("#two").click(function(){
             // $(".workday").css("color","red") ;
 
             // $("li").slice(0,5).css("color","green") ;
 
             // $("li").filter($(".workday")).css("color","yellow") ;
 
             // $("li").filter(function(index){
             //     return index <= 4 ;
             // }).css("color","pink") ;
 
 
             // 链式操作
             $("li").not($("#sat")).not($("#sun")).css("color","purple");
 
             // ...
 
        }) ;
 
 
         $("#three").click(function(){
             // 偶数
             $("li").filter(function(index){
                 return index % 2 == 0 ;
            }).css("color","red") ;
 
             // 奇数
             $("li").filter(function(index){
                 return index % 2 != 0 ;
            }).css("color","blue") ;
        }) ;
 
 
     </script>
 </body>
 </html>

5、设计一个表格,实现表格隔行变色

 

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Document</title>
     <!-- 第一:导入 JQ 文件 -->
     <script src="js/jq/jquery-1.12.4.js" type="text/javascript"></script>
 </head>
 <body>
     <table border="1" width="80%" align="center">
         <tr>
             <td>111</td>
             <td>111</td>
             <td>111</td>
         </tr>
         <tr>
             <td>111</td>
             <td>111</td>
             <td>111</td>
         </tr>
         <tr>
             <td>111</td>
             <td>111</td>
             <td>111</td>
         </tr>
         <tr>
             <td>111</td>
             <td>111</td>
             <td>111</td>
         </tr>
         <tr>
             <td>111</td>
             <td>111</td>
             <td>111</td>
         </tr>
     </table>
 
     <script>
         $("table tr:eq(0)").css("background","black").css("color","white") ;
         $("table tr:even:not(:first)").css("background","red") ;
         $("table tr:odd").css("background","yellow") ;
     </script>
 </body>
 </html>

6、对多选框进行操作,输出选中的多选框的个数及内容

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 第一:导入 JQ 文件 -->
    <script src="js/jq/jquery-1.12.4.js" type="text/javascript"></script>
</head>
<body>
    爱好:
        <input type="checkbox" name="hobby" value="eat" checked="true">吃
        <input type="checkbox" name="hobby" value="drink" checked="true">喝
        <input type="checkbox" name="hobby" value="play">玩
        <input type="checkbox" name="hobby" value="happy">乐
        <br/>

        <button>确定</button>


    <script>
        // 注意:选择页面元素时,一般尽量精确选择
        $(":button:contains('确定')").click(function(){
            // 选择选中的复选框集合(包装集)
            var nodeArray = $("input[name=hobby]:checked") ;
            alert("数量为:" + nodeArray.size()) ;
            // 定义变量,用于连接字符串
            var neiRong = "内容为:" ;
            // 循环遍历选中复选框,并获取内容,连接一个字符串,返回
            for(var i=0 ; i<nodeArray.length ; i++) {
                neiRong += $(nodeArray[i]).val() + " ,";
            }
            // 截取字符串,去除最后一个逗号
            neiRong = neiRong.substring(0,neiRong.length-1) ;

            alert(neiRong)

        }) ;
    </script>
</body>
</html>

7、给网页中的所有p元素添加onclick事件,并打印输出当前p元素的内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 第一:导入 JQ 文件 -->
    <script src="js/jq/jquery-1.12.4.js" type="text/javascript"></script>
</head>
<body>
    <p>好好学习</p>
    <p>天天向上</p>

    <script>
        // 选择 p 元素,并绑定单击事件
        $("p").click(function(){
            // this : 触发事件的目标对象 - window.event.target
            var txt = $(this).text() ;
            alert(txt) ;
        }) ;
    </script>
</body>
</html>

8、实现表格的CRUD

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 第一:导入JQ -->
    <script src="js/jq/jquery-1.12.4.js"></script>

    


    <title>Document</title>
</head>
<body>
    <ul class="father">
        <li>大哥</li>
        <li>二哥</li>
        <li class="mm">三妹</li>
    </ul>

    <input type="text">
    <button>添加</button>

    <p/>
    <input type="text">
    <button>删除</button>

    <p/>
    修改前:<input type="text">
   
    <p/>
    修改后:<input type="text">
    <button>修改</button>

    <p/>
    条件:<input type="text">
    <button>查找</button>


    
    <!-- 第二:使用JQ(对象方法、属性)-->
    <script>
        $("#btn").click(function(){
           var node = $("#gg").closest(".father") ;

           var v = node.attr("data-test") ;

           // data()方法,专门用于操作 data- 属性的设置和获取 
           // var v = node.data("test") ;

           console.log(v);

           // 对比 closest vs parents
        }) ;

        

        

    </script>
</body>
</html>

9、制作一个表格,完成以下操作

 

1)标题行设置背景黑色,字体白色 2)表格各行隔行变色 3)鼠标经过变色,离开还原原色 4)鼠标单击某行变色,其它被单击的行还原原色

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/jq/jquery-1.12.4.js"></script>
    <style>
        .ji {
            background-color: yellow;
        }

        .ou {
            background-color: aqua;
        }

        .jingGuo {
            background-color: pink;
        }

        .danJi {
            background-color: red;
        }

    </style>
</head>
<body>
    <table border="1" align="center" width="60%">
        <tr>
            <th>姓名</th>
            <th>姓名</th>
            <th>姓名</th>
            <th>姓名</th>
            <th>姓名</th>
        </tr>

        <tr>
            <td>数据</td>
            <td>数据</td>
            <td>数据</td>
            <td>数据</td>
            <td>数据</td>
        </tr>

        <tr>
            <td>数据</td>
            <td>数据</td>
            <td>数据</td>
            <td>数据</td>
            <td>数据</td>
        </tr>

        <tr>
            <td>数据</td>
            <td>数据</td>
            <td>数据</td>
            <td>数据</td>
            <td>数据</td>
        </tr>

        <tr>
            <td>数据</td>
            <td>数据</td>
            <td>数据</td>
            <td>数据</td>
            <td>数据</td>
        </tr>

        <tr>
            <td>数据</td>
            <td>数据</td>
            <td>数据</td>
            <td>数据</td>
            <td>数据</td>
        </tr>

        <tr>
            <td>数据</td>
            <td>数据</td>
            <td>数据</td>
            <td>数据</td>
            <td>数据</td>
        </tr>
    </table>

    <script>
        // 1)标题行设置背景黑色,字体白色
        // $("table tr:first")
        $("table tr").first().css("background","black").css("color","white") ;

        // 2)表格各行隔行变色 - css
        $("table tr:even:gt(0)").addClass("ou") ;
        $("table tr:odd").addClass("ji") ;

        // 3)鼠标经过变色,离开还原原色
        $("table tr").not(":first").hover(function(){
            $(this).addClass("jingGuo") ;
        },function(){
            $(this).removeClass("jingGuo") ;
        }) ;

        // 4)鼠标单击某行变色,其它被单击的行还原原色
        $("table tr").not(":first").click(function(){
            // $(this).addClass("danJi") ;
            $(this).toggleClass("danJi") ;

            $(this).siblings().removeClass("danJi");
        });


    </script>
</body>
</html>

11、页面变化

 

#bg{
    background-color:purple;height:120px;
    width:100%;
    position: absolute;/*绝对定位*/
    float: left;
}
#an{
    background-color:blue;width:20px;
    height:20px;
    text-align: center;line-height: 20px;
    position: relative;/*相对定位:相对于当前元素的位置定位*/
    left: 98%;
    top: 10px;
}
style>
---------------------------------------
<body>
   <div id="bg"></div>
   <div id="an">x</div>
   
   <script>
        $( "#an") .click(function(){
        	$("#bg ").hide();
        });
        $(function(){
            var myvar =setTimeout(function(){
                for(var i=10;i>o;){
                    i--;
                    if(i==0){
                    $("#bg").hide();
                    clearInterval(myVar);
                }
            }
        },10000)});
   </script>
</body>

12、页面变化

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/jq/jquery-1.12.4.js"></script>
    <style>
        #black{
            width: 100px;
            height: 100px;
            background-color: black;
            position: absolute;
            left: 5px;
            top: 5px;
            z-index: 2;
        }
        #red{
            width: 100px;
            height: 300px;
            background-color: red;
            position: absolute;
            left: 5px;
            top: 5px;
            z-index: 1;
        }
    </style>
</head>
<body>
    
    <div id="black"></div>

    <button id="red"></button>
    
    <script>
        $(function(){
            $( "#red" ).hide( );
        })

        $("#black").mousemove(function(){
            $("#red").show();
            $(this).hide();
        })

        $("#red").mouseout(function(){
            $("#red").hide();
            $("#black").show();
        })
    </script>
</body>
</html>

13、JQ操作

 

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/jq/jquery-1.12.4.js"></script>
    <link href="css/lianxi-02.css" rel="stylesheet" type="text/css"/>
</head>
<body>
    <table border="1" align="center" id="tbl">
        <thead>
            <tr>
                <th>
                    <input type="checkbox" id="checkAll"></input>
                    <label for="checkAll">全选</label>
                </th>
                <th>商品编号</th>
                <th>名称</th>
                <th>价格</th>
                <th>上货日期</th>
                <th>是否下架</th>
                <th>操作</th>
            </tr>
        </thead>
        
        <tbody>

        </tbody>
    </table>

    <!-- 表单容器 -->
    <div id="form-container">
        <div id="title">商品添加</div>

        <form id="frm">
            商品编号:<input type="text" id="pid"/><p/>
            商品名称:<input type="text" id="name"/><p/>
            商品价格:<input type="text" id="price"/><p/>
            上货日期:
                <select id="year"></select>
                <select id="month"></select>
                <select id="day"></select>
                <p/>
            是否下架:
                <input type="radio" name="isDown" checked/>是
                <input type="radio" name="isDown"/>否
                <p/>
            <button type="button" id="btnAdd">添加</button>
            <button type="button" id="btnUpdate">修改</button>
            <button type="button" id="btnDels">批量删除</button>
        </form>
        
        <div id="tips">双击表单,添加数据</div>
    </div> 
    <script src="js/lianxi-02.js" type="text/javascript"></script>
</body>
</html>

css

table {
    border-collapse: collapse;
    width: 100%;
}

td {
    text-align: center;
}

#form-container {
    width:500px;
    height: 300px; 
    border: 1px solid red;
    border-radius: 10px;
    margin-top: 30px;
    padding: 40px;

    /* 宽度 = width + border + padding */
    box-sizing: border-box;

    /* 卡位:好让子元素相对于当前父元素定位 */
    position: relative;
}

#title {
    width: 100px;
    height: 30px;
    background-color: black;
    color:white;
    text-align: center;
    line-height: 30px;

    position: absolute;
    left: 10px;
    top:-18px;
}

#tips {
    width: 200px;
    height: 50px;
    background-color: yellow;
    color:red;
    text-align: center;
    line-height: 50px;

    position: absolute;
    right: -220px;
    top:0;
}

#btnUpdate {
    display: none ;
}

table tr td span {
    margin-right: 10px;
    text-decoration: underline;
    cursor: pointer;
}

js

var p1 = {
    pid:'201300001',
    name:'Lenovo A820T',
    price:650.0,
    inDate:'2018-01-07',
    isDown:true
};

var p2 = {
    pid:'201300007',
    name:'Acer 星锐 4752G',
    price:4000.8,
    inDate:'2019-09-02',
    isDown:true
};

var p3 = {
    pid:'201300009',
    name:'ZTE U880',
    price:450.0,
    inDate:'2021-12-07',
    isDown:false
};

/**
 * DOM操作 - 在表格中,创建一个新的行,并设置相关的数据
 * @param {表格} table 
 * @param {商品对象} p 
 */
function createTr(table,p) {
    // 第一:创建td节点
    var td1 = $("<td><input type='checkbox' class='ckAll' value='" + p.pid + "'></input></td>") ;
    var td2 = $("<td>" + p.pid + "</td>") ;
    var td3 = $("<td>" + p.name + "</td>") ;
    var td4 = $("<td>" + p.price + "</td>") ;
    var td5 = $("<td>" + p.inDate + "</td>") ;
    var td6 = $("<td><input type='checkbox'></input></td>") ;
    var td7 = $("<td><span id='spanDel'>删除</span><span id='spanUpdate'>修改</span><span id='spanDetail'>详情</span></td>") ;

    // 设置商品是否下架 - find方法是向下查找匹配元素
    td6.find(":checkbox").prop("checked",p.isDown) ; ;

    // 第二:创建 tr 节点
    var tr = $("<tr></tr>") ;

    // 第三:把 td 节点,添加到tr节点中
    tr.append(td1).append(td2).append(td3).append(td4).append(td5).append(td6).append(td7);

    // 第四:把 tr节点 添加 table节点中
    table.append(tr) ;
}

// 1)初始化三条数据
function initDate() {
     var table = $("#tbl tbody")
     createTr(table,p1)
     createTr(table,p2)
     createTr(table,p3)
}

// 2)初始化年份(近10年)
function initYear() {
    // 第一:获取当前年份
    var now = new Date() ;
    var year = now.getFullYear() ;

    // 第二:创建 option 节点
    for(i=year-5;i<=year+5;i++) {
        // var option = $("<option value='"+i+"' " + (year==i?'selected':'') + ">"+i+"</option>")
        var option = $("<option value='" + i + "'>" + i + "</option>")
        // 第三:把 option 节点,添加到 select 节点中
        $("#year").append(option) ;
    }

    // 第四:默认选中当前年份
    $("#year option").filter(function(index){
        return $(this).text() == year ;
    }).prop("selected",true) ;
}

// 3)初始化月份
function initMonth() {
    // 第一:获取当前月份
    var now = new Date() ;
    var currentMonth = now.getMonth() + 1;
    currentMonth = currentMonth<10 ? '0'+currentMonth : currentMonth;

    // 第一:循环12次,创建 option 节点
    for(var i=1;i<=12;i++) { 
        
        var m = i<10?'0'+i:i ;

        var option = $("<option value='" + m + "'>" + m + "</option>") ;
         // 第二:把 option 节点,添加到 select节点中
         $("#month").append(option) ;
    }

    // 第三:默认选中当前月份
    $("#month option").filter(function(index){
        return $(this).text() == currentMonth ;
    }).prop("selected",true) ;
}

/**
 * 根据年份和月份,计算日期天数
 * @param {*} year 
 * @param {*} month 
 */
function getDay(year,month) {
   
    var day = 28 ;

    switch(month * 1) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            day = 31 ;
            break ;
        case 4:
        case 6:
        case 9:
        case 11:
            day = 30 ;
            break ;
        default:
            if(year % 4==0 && year % 100!=0 || year%400==0) {
                day = 29 ;
            }
    }

    return day ;
}

// 4)初始化日期(根据年份、月份动态生成)
function initDay(year,month) {
    // 第一:获取当前日期
    var now = new Date() ;
    var currentDate = now.getDate() ;

    // 第二:计算天数
    var day = getDay(year,month);

    // 第三:循环遍历天数,创建 option 节点
    for(var i=1;i <= day;i++) {
        var riQi = i < 10 ? '0' + i : i ;
        var option = $("<option value='" + riQi + "'>" + riQi + "</option>") ;
        // 第四:添加到 select 节点
        $("#day").append(option) ;
    }

    // 第四:默认选中当前日期
    $("#day option").filter(function(){
        var riQi = currentDate < 10 ? '0' + currentDate : currentDate ;
        return $(this).text() == riQi ;
    }).prop("selected",true) ;
}

/**
 * 页面加载 
 *  1)初始化三条数据
 *  2)初始化年份(近10年)
 *  3)初始化月份
 *  4)初始化日期(根据年份、月份动态生成)
 */
$(function(){
    initDate() ;

    initYear() ;

    initMonth() ;

    // 第一:获取当前的年份、月份、日期
    var now = new Date() ;
    var year = now.getFullYear();
    var month = now.getMonth() + 1 ;

    initDay(year,month) ;


}) ;


// 年份切换
$("#year").change(function(){
    // 第一:删除日期下拉列表框中的所有日期
    $("#day option").remove() ;

    // 第二:获取当前选中的年份和月份
    var year = $("#year option:selected").text() ;
    var month = $("#month option:selected").text() ;

    initDay(year,month) ;
}) ;

// 月份切换
$("#month").change(function(){
    // 第一:删除日期下拉列表框中的所有日期
    $("#day option").remove() ;

    // 第二:获取当前选中的年份和月份
    var year = $("#year option:selected").text() ;
    var month = $("#month option:selected").text() ;
    
    initDay(year,month) ;
}) ;


/**
 * 添加商品
 */
$("#btnAdd").click(function(){

    // 分别获取选中的年、月、日
    var y = $("#year option:selected").text() ;
    var m = $("#month option:selected").text() ;
    var d = $("#day option:selected").text() ;
    // 拼接日期
    var shangHuoRiQi = y + "-" + m + "-" + d ;
    // 判断是否下架
    var shiFouXiaJia = true ;
    if($(":radio[name=isDown]").eq(1).prop("checked") == true) {
        shiFouXiaJia = false ;
    }
    // 创建商品对象,并初始化表单输入的数据
    var p = {
        pid:$("#pid").val(),
        name:$("#name").val(),
        price:$("#price").val(),
        inDate:shangHuoRiQi,
        isDown:shiFouXiaJia
    } ;
    createTr($("#tbl tbody"),p)
});


/**
 * 删除当前行
 */
$("#tbl tbody").on("click","#spanDel",function(){

    var bl = confirm("您真的要删除吗?") ;

    if(bl) {
        $(this).closest("tr").remove();
    }

    
}) ;

/**
 * 批量删除
 */
$("#btnDels").click(function(){
    var size = $(".ckAll:checked").size() ;
    var bl = confirm("您真的要删除这" + size + "条件数据?") ;
    if(bl) {
        $(".ckAll:checked").closest("tr").remove();
    }
}) ;

/**
 * 全选 
 */
$("#checkAll").click(function(){
    // 获取全选复选框的状态
    var checkAllState = $("#checkAll").prop("checked") ;

    // 设置各行复选框的状态与全选复选框的状态一致
    $(".ckAll").prop("checked",checkAllState) ;
}) ;


/**
 * 展示数据 - 把当前行的数据,回显在表单中
 */
function showData(span) {
    var tds = span.closest("tr").children() ;
    
    $("#pid").val($(tds[1]).text()) ;
    $("#name").val($(tds[2]).text()) ;
    $("#price").val($(tds[3]).text()) ;

    // 分别获取日期中年、月、日
    var arr = $(tds[4]).text().split("-") ;
    var y = arr[0] ;
    var m = arr[1] ;
    var d = arr[2] ;

    // 表单匹配选中上面的日期
    $("#year option").filter(function(){
        return $(this).text() == y ;
    }).prop("selected",true) ;

    $("#month option").filter(function(){
        return $(this).text() == m ;
    }).prop("selected",true) ;

    $("#day option").filter(function(){
        return $(this).text() == d ;
    }).prop("selected",true) ;

    // 获取复选框状态
    var status = $(tds[5]).find(":checkbox").prop("checked")

    if(status) {
        $("input[name=isDown]:eq(0)").prop("checked",true)
    } else {
        $("input[name=isDown]:eq(1)").prop("checked",true)
    }
}


/**
 * 把修改的当前行数据,回显在表单中
 */
$("#tbl tbody").on("click","#spanUpdate",function(){
    showData($(this)) ;

    $("#title").text("商品修改") ;
    $("#btnAdd").hide();
    $("#btnUpdate").show() ;
}) ;

/**
 * 把详情按钮所在行数据,回显在表单中
 */
 $("#tbl tbody").on("click","#spanDetail",function(){
    showData($(this)) ;

    $("#title").text("商品详情") ;
    $("#btnAdd").hide();
    $("#btnUpdate").hide() ;
}) ;

/**
 * 双击,显示添加表单
 */
$("#form-container").dblclick(function(){
    $("#title").text("商品添加") ;
    $("#btnAdd").show();
    $("#btnUpdate").hide() ;
}) ;


/**
 * 修改数据
 */
$("#btnUpdate").click(function(){
    // 获取文本框的商品编号
    var pid = $("#pid").val() ;

    // 找到修改数据所在的行
    var tr = $("#tbl tbody tr").filter(function(){
        return $($(this).children()[1]).text() == pid ;
    }) ;


    // 获取修改行下的所有列
    var tds = tr.children() ;

    $(tds[2]).text($("#name").val()) ;
    $(tds[3]).text($("#price").val()) ;

    var y = $("#year option:selected").text() ;
    var m = $("#month option:selected").text() ;
    var d = $("#day option:selected").text() ;

    $(tds[4]).text(y + "-" + m + "-" + d) ;


    var status = $("input[name=isDown]").eq(0).prop("checked") ;
    
    
    if(status) {
        $(tds[5]).find(":checkbox").prop("checked",true) ;
    } else {
        $(tds[5]).find(":checkbox").prop("checked",false) ;
    }

}) ;



 

案例

样式使用方式

1、内联式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title> 内联式</title>
</head>
<body>
    <div style="font-size:30px;color:red;font-weight: bold;font-style: italic;">
        好好学习,天天向上
    </div>
</body>
</html>

2、嵌入式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>嵌入式</title>

    <style>
        div {
            font-size:50px ;
            text-decoration:underline ;
            color: blue;
        }
    </style>
</head>
<body>
    <div>
        好好学习,天天向上
    </div>

    <div>
        必须滴
    </div>
</body>
</html>


------------------------------------------------------------
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <style>
        /*嵌入样式*/
        h1 {
           color:red ;
           font-size:50px ;
           text-decoration: underline;
        }
    </style>
</head>
<body>
    <font size="7" color="blue">
        好好学习,天天向上
    </font>

    <h1>必须滴</h1>

    <div>哈罗</div>
</body>
</html>

3、外部式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>外部式</title>

    <link href="style.css" type="text/css" rel="stylesheet"/>
</head>
<body>
    <div>
        好好学习,天天向上
    </div>
</body>
</html>

div {
    font-size: 60px;
    color: green;
    text-align: center;
}

4、导入式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>导入式</title>

    <link href="hebing.css" type="text/css" rel="stylesheet"/>
   
</head>
<body>
    <div style="color:blue">
        静
    </div>
</body>
</html>
/*
    导入其它的样式文件到当前样式文件中 - 合并
*/
@import url('style1.css');
@import url('style2.css');
@import url('style3.css');

/*
    同时,在当前的样式文件中,也可以定义样式
*/
div {
    border:1px solid yellow;
}

javaSclipt

1、变换样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div>天天向上</div>

    <font color="red" size="7" id="gg">好好学习</font>


    <script>
        // 第一:获取要操作的节点对象
        var fontNode = document.getElementById("gg") ;

        // 第二:使用节点对象的相关方法和属性进行操作
        // 1. 修改标记修饰的内容
        fontNode.innerHTML = "天天向上";

        // 2.获取节点的类型
        var elementNodeType = fontNode.nodeType
        console.info("元素节点类型值:" + elementNodeType) ;

        // 3.获取文本节点
        var textNode = fontNode.firstChild;
        var textNodeType = textNode.nodeType ;
        console.info("文本节点类型值:" + textNodeType) ;

        // 4.获取哥哥节点
        // var divNode = fontNode.previousSibling.previousSibling ;
        var divNode = fontNode.previousElementSibling;
        console.info("哥哥节点的文本内容为:" + divNode.innerHTML)

        // 5.获取 font 节点的属性节点对象
        var attributeArray = fontNode.attributes;
        console.log("属性个数:"+attributeArray.length);
        console.log("属性节点类型值:" + attributeArray[0].nodeType);

        console.log("第一个属性名称:" + attributeArray[0].name);
        console.log("第一个属性值:" + attributeArray[0].value);
        

        console.log("第二个属性名称:" + attributeArray[1].name);
        console.log("第二个属性值:" + attributeArray[1].value);

        console.log("第三个属性名称:" + attributeArray[2].name);
        console.log("第三个属性值:" + attributeArray[2].value);

    </script>
</body>
</html>

2、添加、移除、获取属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="dd">天天向上</div>

    <button onclick="aa()">添加属性</button>
    <button onclick="bb()">移除属性</button>
    <button onclick="cc()">获取属性</button>


    <script>
        function aa() {
            // 第一:获取要操作的节点
            var divNode = document.getElementById("dd") ;

            // 第二:使用节点对象的属性或方法进行相关的操作
            divNode.setAttribute("style","color:red;font-size:50px");
        }

        function bb() {
            // 第一:获取要操作的节点
            var divNode = document.getElementById("dd") ;

            // 第二:使用节点对象的属性或方法进行相关的操作
            divNode.removeAttribute("style");
        }

        function cc() {
            // 第一:获取要操作的节点
            var divNode = document.getElementById("dd") ;

            // 第二:使用节点对象的属性或方法进行相关的操作
            var attrValue = divNode.getAttribute("style");

            console.log(attrValue);
        }

    </script>
</body>
</html>

3、添加、插入、克隆、移除、替换节点

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <ul id="gg">
        <li onclick="haha()" id="hh">好好学习</li>
        <li id="tt">天天向上</li>
    </ul>

    <button onclick="aa()">添加节点</button>
    <button onclick="bb()">插入节点</button>
    <button onclick="cc()">克隆节点</button>
    <button onclick="dd()">移除节点</button>
    <button onclick="ee()">替换节点</button>
   

    <script>

        function haha() {
            alert("希望同学们都能做到,少玩点游戏少看点小说!") ;
        }

        function aa() {
            // 第一:获取要操作的节点
            var ulNode = document.getElementById("gg") ;
          
            // 第二:使用节点对象的属性或方法进行相关的操作
            // 1.创建一个 li 节点
            var liNode = document.createElement("li") ;

            // 2.设置 li 节点的修饰内容
            liNode.innerText = "天天向上" ;

            // 3.把 li 节点 添加到 ul节点中
            ulNode.appendChild(liNode) ;
           
        }

        function bb() {
            // 第一:获取要操作的节点
            var ttNode = document.getElementById("tt") ;
            var ulNode = document.getElementById("gg") ;
          
            // 第二:使用节点对象的属性或方法进行相关的操作
            // 1.创建一个 li 节点
            var liNode = document.createElement("li") ;

            // 2.创建文本节点
            var txtNode = document.createTextNode("大家好") ;
          
            // 3.把文本节点,添加到 li 节点中
            liNode.appendChild(txtNode)

            // 3.把 li 节点 添加到 ul节点中
            ulNode.insertBefore(liNode,ttNode) ;
           
        }

        function cc() {
            // 第一:获取要操作的节点
            var ulNode = document.getElementById("gg") ;
            var hhNode = document.getElementById("hh") ;

            // 第二:使用节点对象的属性或方法进行相关的操作
            // 1.克隆节点 
            // false:不包含节点内容
            // true:包含节点内容
            var newNode = hhNode.cloneNode(false) ;
            newNode.innerText = "大家好!" ;

            // 2.把克隆的节点,添加到 ul 节点中
            ulNode.appendChild(newNode);
        }

        function dd() {
            // 第一:获取要操作的节点
            var ulNode = document.getElementById("gg") ;
            var hhNode = document.getElementById("hh") ;

            // 第二:使用节点对象的属性或方法进行相关的操作
            ulNode.removeChild(hhNode) ;
        }

        function ee() {
            // 第一:获取要操作的节点
            var ulNode = document.getElementById("gg") ;
            var hhNode = document.getElementById("hh") ;
            
            // 第二:使用节点对象的属性或方法进行相关的操作
            // 1.创建元素节点对象,并设置文本内容
            var liNode = document.createElement("li");
            liNode.innerText = "大家好"  ;

            // 2.替换节点
            ulNode.replaceChild(liNode,hhNode);
        }

    </script>
</body>
</html>

JQuery

1、第一个JQuery程序

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>第一个JQuery程序</title>
    <!-- 第一:在 HTML 页面中,引入 js 文件 -->
    <script src="js/jq/jquery-1.12.4.js" type="text/javascript"></script>
</head>
<body>
    <button id="btn">点我看看</button>

    <script>
        // 1.原生 JavaScript 实现
        // document.getElementById("btn").onclick = function() {
        //     alert("流氓!") ;
        // }
        // 2. JQ实现
        // 在 JavaScript中,函数也是一个数据
        // 因此,函数也可以作为另一个函数的参数进行传递
        // 作为参数传递的函数,我们称之为回调函数
        // 另外,没有名称的函数,称之为匿名函数
        $("#btn").click(function(){
            alert("臭流氓!")
        }) ;
    </script>
</body>
</html>

2、窗体加载事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>窗体加载</title>
    <!-- 第一:在 HTML 页面中,引入 js 文件 -->
    <script src="js/jq/jquery-1.12.4.js" type="text/javascript"></script>
</head>
<body>
    <button id="btn">点我看看</button>

    <script>
        // 1.原生 JavaScript 实现
        // window.onload = function() {
        //     alert("窗体加载时触发1")
        // }

        // window.onload = function() {
        //     alert("窗体加载时触发2")
        // }

        // 2. JQ实现
        // $() :JQ提供的一个工厂函数
        $(document).ready(function(){
            alert("网页文档加载时触发1")
        }) ;

        $(document).ready(function(){
            alert("网页文档加载时触发2")
        }) ;

        // 简写
        $(function(){
            alert("网页文档加载时触发3")
        }) ;


      
    </script>
</body>
</html>

3、原生JS对象和JQ对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>原生JS对象 VS JQ对象</title>
    <!-- 第一:在 HTML 页面中,引入 js 文件 -->
    <script src="js/jq/jquery-1.12.4.js" type="text/javascript"></script>
</head>
<body>
    <h1 id="gg">好好学习</h1>

    <button id="btn1">原生JS对象操作</button>
    <button id="btn2">JQ对象操作</button>

    <button id="btn3">JQ转DOM</button>
    <button id="btn4">DOM转JQ</button>

    <script>
        // 原生JS对象操作
        $("#btn1").click(function(){
            // h1Node就是一个原生的 JavaScript DOM节点对象
            // 那么,此对象只能使用原生对象的属性和方法
            var h1Node = document.getElementById("gg") ;
            var txt = h1Node.innerText;
            alert(txt) ;
        }) ; 
        // JQ对象操作
        $("#btn2").click(function(){
            // 注意:使用$()获取的节点对象是JQ节点对象
            // 那么,此对象一般比原生对象更加强大或操作方便,它经过了JQ的二次封装
            // 另外,此对象只能访问JQ对象封装的属性和方法,而原生的属性和方法不能访问
            var h1Node = $("#gg") ;
            var txt = h1Node.text();
            alert(txt) ;
        }) ; 


        $("#btn3").click(function(){
            // h1Node是一个JQuery对象
            var h1Node = $("#gg") ;

            // 把JQ对象转换为原生的DOM对象
            // 方法一:JQ对象[下标]
            // var domObj = h1Node[0] ;

            // 方法二:JQ对象.get(下标)
            var domObj = h1Node.get(0) ;

            // 获取节点中的文本内容
            var txt = domObj.innerText ;

            alert(txt) ;
        }) ;


        $("#btn4").click(function(){
            // h1Node是一个原生的DOM对象
            var h1Node = document.getElementById("gg") ;

            // 把DOM对象转换为JQ对象
            var jqObj = $(h1Node);

            // 获取节点中的文本内容
            var txt = jqObj.text() ;

            alert(txt) ;
        }) ;


    </script>
</body>
</html>

4、基本选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>基本选择器</title>
    <!-- 第一:在 HTML 页面中,引入 js 文件 -->
    <script src="js/jq/jquery-1.12.4.js" type="text/javascript"></script>
</head>
<body>
    <h1 id="gg">好好学习</h1>

    <span class="aa">你好</span>
    <span class="aa">我好</span>
    <span class="aa">大家好,才是真的好</span>

    <p/>

    <a class="bb">百度一下</a>
    <a>腾讯一下</a>
    <a class="bb">优酷一下</a>

    <b>天天向上</b>

    <p/>
    <button id="btn1">ID选择器</button>
    <button id="btn2">Class选择器</button>
    <button id="btn3">Class选择器</button>
    <button id="btn4">组合选择器</button>
    <button id="btn5">通配选择器</button>
    

    <script>

        $("#btn1").click(function(){
            // 第一:选择要操作的节点对象
            //var h1Node = $("#gg");

            // 第二:使用节点对象的属性或方法实现相关的操作
            $("#gg").text("天天向上") ;
        }) ; 


        $("#btn2").click(function(){
            // 第一:选择要操作的节点对象 - 返回的是数组
            var spansNode = $(".aa");

             // 第二:使用节点对象的属性或方法实现相关的操作 
             // alert(spansNode.length)
             // spansNode[0].innerText = "you good" ;
             $(spansNode[0]).text("you good") ;
        }) ;

        $("#btn3").click(function(){
            var asNode = $("a") ;
            alert(asNode.length)
        }) ;

        $("#btn4").click(function(){
            // 组合选择器 - 同时根据多个选择器选择内容
            var nodes = $("#gg,b,.bb");

            alert(nodes.length)
        }) ;

        $("#btn5").click(function(){
            var nodes = $("*") ;
            alert(nodes.length)
        }) ;

        

    </script>
</body>
</html>

5、包装集常用的方法

容量大小

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>包装集常用的API方法</title>
    <!-- 第一:在 HTML 页面中,引入 js 文件 -->
    <script src="js/jq/jquery-1.12.4.js" type="text/javascript"></script>
</head>
<body>
    <h1 id="gg">好好学习</h1>

    <span class="aa">你好</span>
    <span class="aa">我好</span>
    <span class="aa">大家好,才是真的好</span>

    <p/>

   
    <button id="btn1">返回包装集的大小</button>
    
    

    <script>

        $("#btn1").click(function(){
            // 根据类名获取节点对象 - 包装集对象 - 多个JQ对象的集合 - 数组
            var spanNodes = $(".aa") ;

            // 获取包装集的大小或长度
            var len1 = spanNodes.length;
            var len2 = spanNodes.size() ;

            alert(len1) ;
            alert(len2) ;
        }) ;

    </script>
</body>
</html>

index

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>包装集常用的API方法</title>
    <!-- 第一:在 HTML 页面中,引入 js 文件 -->
    <script src="js/jq/jquery-1.12.4.js" type="text/javascript"></script>
</head>
<body>
    <ul>
        <li id="foo">foo</li>
        <li id="bar">bar</li>
        <li id="baz">baz</li>
    </ul>

    <button id="btn1">返回包装集某个子元素的下标索引</button>

    <script>

        $("#btn1").click(function(){
            // 如果不存在,则返回-1
            var index = $("li").index($("#bar"));
            alert(index) ;
        }) ;

    </script>
</body>
</html>

add

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>包装集常用的API方法</title>
    <!-- 第一:在 HTML 页面中,引入 js 文件 -->
    <script src="js/jq/jquery-1.12.4.js" type="text/javascript"></script>
</head>
<body>
    <p>你好</p>
    <p>我好</p>

    <div>1</div>
    <div>2</div>
    <div>3</div>

    <button id="btn1">add</button>

    <script>

        $("#btn1").click(function(){
            // JQ对象.css("CSS属性","CSS属性值")
            // $("div").css("color","red") ;
            $("div").add($("p")).css("color","red") ;
        }) ;

    </script>
</body>
</html>

not

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>包装集常用的API方法</title>
    <!-- 第一:在 HTML 页面中,引入 js 文件 -->
    <script src="js/jq/jquery-1.12.4.js" type="text/javascript"></script>
</head>
<body>
    
    <div>1</div>
    <div class="aa">2</div>
    <div>3</div>
    <div class="aa">4</div>
    <div>5</div>

    <button id="btn1">add</button>

    <script>

        $("#btn1").click(function(){
            $("div").not($(".aa")).css("color","red");
        }) ;

    </script>
</body>
</html>

filter

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>包装集常用的API方法</title>
    <!-- 第一:在 HTML 页面中,引入 js 文件 -->
    <script src="js/jq/jquery-1.12.4.js" type="text/javascript"></script>
</head>
<body>
    
    <div>1</div>
    <div class="aa">2</div>
    <div>3</div>
    <div class="aa">4</div>
    <div>5</div>

    <button id="btn1">filter1</button>
    <button id="btn2">filter2</button>

    <script>
        $("#btn2").click(function(){
            // 增强过滤
            $("div").filter(function(index){
                return index == 0 || $(this).attr("class") == 'aa';
            }).css("color","red") ;
        }) ;

        $("#btn1").click(function(){
            $("div").filter($(".aa")).css("color","red");
        }) ;

    </script>
</body>
</html>

silce

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>包装集常用的API方法</title>
    <!-- 第一:在 HTML 页面中,引入 js 文件 -->
    <script src="js/jq/jquery-1.12.4.js" type="text/javascript"></script>
</head>
<body>
    
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
    <div>5</div>

    <button id="btn1">add</button>

    <script>

        $("#btn1").click(function(){
            // 下标索引从0开始
            // 包头不包尾
            // $("div").slice(1,4).css("color","red");

            // $("div").slice(1).css("color","red");

            $("div").slice(-3,-1).css("color","red");

        }) ;

    </script>
</body>
</html>

6、层次选择器

后代选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 第一:导入 JQ 文件 -->
    <script src="js/jq/jquery-1.12.4.js" type="text/javascript"></script>
</head>
<body>
    <div class="aa">
        <p class="bb">你好</p>

        <span>
            <p class="bb">我好</p>
        </span>
    </div>
    <p>大家好,才是真的好</p>

    <button id="one">按钮</button>
    <script>
        $("#one").click(function(){
            // 层次选择器:后代选择器 
            // 语法:$("选择器1 选择器2"),返回选择器1下所有的后代选择器2的元素
            // $("div p").css("color","red") ;
            // $(".aa p").css("color","red") ;
            $(".aa .bb").css("color","red") ;
        }) ;
    </script>
</body>
</html>

子元素选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 第一:导入 JQ 文件 -->
    <script src="js/jq/jquery-1.12.4.js" type="text/javascript"></script>
</head>
<body>
    <div>
        <p>你好</p>

        <span>
            <p>我好</p>
        </span>
    </div>
   
    <p>大家好,才是真的好</p>

    <button id="one">按钮</button>
    <script>
        $("#one").click(function(){
            // 层次选择器:子元素选择器
            $("div > p").css("color","red") ;
        }) ;
    </script>
</body>
</html>

下一个弟弟选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 第一:导入 JQ 文件 -->
    <script src="js/jq/jquery-1.12.4.js" type="text/javascript"></script>
</head>
<body>
    <div>
        <label>you good</label>
        <p>你好</p>

        <span>
            <label>i good</label>
            <p>我好</p>
            <p>我好啊</p>
        </span>
    </div>
   
    <p>大家好,才是真的好</p>

    <button id="one">按钮</button>
    <script>
        $("#one").click(function(){
            // 层次选择器:下一个弟弟选择器
            $("label + p").css("color","red") ;
            
        }) ;
    </script>
</body>
</html>

所有弟弟选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 第一:导入 JQ 文件 -->
    <script src="js/jq/jquery-1.12.4.js" type="text/javascript"></script>
</head>
<body>
    <div>
        <p>我是大哥大</p>
        <label>you good</label>
        <p>你好</p>

        <span>
            <p>我是大哥</p>
            <label>i good</label>
            <p>我好</p>
            <p>我好啊</p>
        </span>
    </div>
   
    <p>大家好,才是真的好</p>

    <button id="one">按钮</button>
    <script>
        $("#one").click(function(){
            // 层次选择器:所有弟弟选择器
            $("label ~ p").css("color","red") ;
            
        }) ;
    </script>
</body>
</html>

7、过滤选择器

基本过滤

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 第一:导入 JQ 文件 -->
    <script src="js/jq/jquery-1.12.4.js" type="text/javascript"></script>
</head>
<body>
    <!-- 标题标签 -->
    <h1>好好学习</h1>
    <h2>天天向上</h2>
    <h4>每天都必须完成老师的作业</h4>

    <ul>
        <li>AAAA</li>
        <li>BBBB</li>
        <li class="aa">CCCC</li>
        <li>DDDD</li>
        <li>EEEE</li>
    </ul>

    <button id="one">基本过滤</button>
    <button id="two">动画</button>

    <div id="gg" style="display:none;width:200px;height:200px">
        大家好
    </div>

    <script>
        $("#two").click(function(){
            // 1 秒 = 1000 毫秒
            $("#gg").show(5000) ;
        }) ;



        $("#one").click(function(){
            // 选择包装集中的第一个元素
            // $("li:first").css("color","red") ;

            // 选择包装集中的最后元素
            // $("li:last").css("color","red") ;

            // 选择包装集中的指定下标索引的元素
            // $("li:eq(2)").css("color","red") ;

            // 选择包装集中的下标索引大于某个值的元素
            // $("li:gt(2)").css("color","red") ;

            // 选择包装集中的下标索引小于某个值的元素
            // $("li:lt(2)").css("color","red") ;

            // 选择包装集中的下标索引为偶数的元素
            // $("li:even").css("color","red") ;

            // 选择包装集中的下标索引为奇数的元素
            // $("li:odd").css("color","yellow") ;

            // 选择当前页面中所有的 hn 标签
            // $(":header").css("color","yellow") ;

            // 排除
            $("li:not(.aa)").css("color","red") ;

            // 选择当前页面中正在发生动画的元素
            // $(":animated").css("color","yellow") ;

        }) ;
    </script>
</body>
</html>

内容过滤

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 第一:导入 JQ 文件 -->
    <script src="js/jq/jquery-1.12.4.js" type="text/javascript"></script>
</head>
<body>

    <ul>
        <li>AAAA</li>
        <li></li>
        <li><span class="aa">CCCC</span></li>
        <li></li>
        <li><span class="aa">EEEEE</span></li>
    </ul>

    <button id="one">内容过滤</button>
  
    <script>
 
        $("#one").click(function(){
            // 选择包含指定文本内容的元素
            // $("li:contains('AAAA')").css("color","red") ;

            // 选择空元素
            // $("li:empty").text("好好学习") ;

            // 匹配选择含有选择器所匹配的元素的元素
            // $("li:has(.aa)").css("color","red") ;
            // $("li:has(span)").css("color","red") ;

            // 匹配含有子元素或者文本的元素
            $("li:parent").css("color","red") ;
        }) ;
    </script>
</body>
</html>

可见性过滤

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 第一:导入 JQ 文件 -->
    <script src="js/jq/jquery-1.12.4.js" type="text/javascript"></script>

    <style>
        div {
            width: 100px ;
            height: 100px;
        }
    </style>
</head>
<body>
    <div style="background:red">
        AAA
    </div>

    <div style="background: yellow;display: none;">
        BBB
    </div>
    

    <button id="one">可见性过滤</button>
  
    <script>
 
        $("#one").click(function(){
            $("div:visible").css("color","yellow")
            $("div:hidden").show() ;
        }) ;
    </script>
</body>
</html>

属性过滤

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 第一:导入 JQ 文件 -->
    <script src="js/jq/jquery-1.12.4.js" type="text/javascript"></script>

   
</head>
<body>
    
    <font size="7" face="隶书" color="red">你好</font>

    <font face="隶书">我好</font>

    <font face="宋体">大家好,才是真的好</font>

    <p/>
    <button id="one">属性过滤</button>
  
    <script>
        // 属性过滤:针对标签属性进行选择
        $("#one").click(function(){
            // 1.选择拥有指定属性的元素
            // $("font[size]").css("color","blue") ;

            // 2.选择拥有指定属性和属性值的元素
            // $("font[face=隶书]").css("color","blue") ;

            // 3.选择拥有指定属性且不为指定的属性值的元素
            // $("font[face!=隶书]").css("color","blue") ;

            // 4.选择拥有指定属性且属性值以某个字符开始的元素
            // $("font[color^=re]").css("color","blue") ;

            // 5.选择拥有指定属性且属性值以某个字符结束的元素
            // $("font[color$=d]").css("color","blue") ;

            // 6.选择拥有指定属性且属性值包含某个字符的元素
            // $("font[color*=e]").css("color","blue") ;

            // 7.针对多个属性进行选择
            $("font[color=red][face^=隶][size]").css("color","blue") ;
        }) ;
    </script>
</body>
</html>

子元素过滤

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 第一:导入 JQ 文件 -->
    <script src="js/jq/jquery-1.12.4.js" type="text/javascript"></script>
</head>
<body>

    <ul>
        <li>AAAA</li>
        <li>BBBB</li>
        <li class="aa">CCCC</li>
        <li>DDDD</li>
        <li>EEEE</li>
    </ul>

    <ul>
        <li>FFFF</li>
    </ul>

    <ul>
        <li>GGGG</li>
        <li>HHHH</li>
    </ul>
    <button id="one">子元素过滤</button>

    <script>

        $("#one").click(function(){
            // 1.选择第一个子元素
            // $("li:first-child").css("color","red") ;
            // $("ul li:first-child").css("color","red") ;

            // 2.选择最后一个子元素
            // $("li:last-child").css("color","red") ;

            // 3.选择第N个子元素
            // 下标索引从1开始
            // $("li:nth-child(1)").css("color","red") ;
            // $("li:nth-child(even)").css("color","red") ;
            // $("li:nth-child(odd)").css("color","yellow") ;
            // $("li:nth-child(2n+4)").css("color","yellow") ;

            // 4.选择只有一个子元素的元素
            $("ul li:only-child").css("color","yellow") ;

            /*
                注意区别:eq(index)和:nth-child(index)

                eq(index),只选择一个元素,下标索引从0开始;

                而:nth-child(index),也可以选择多个元素,下标索引从1开始。
            */
        }) ;
    </script>
</body>
</html>

表单属性选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 第一:导入 JQ 文件 -->
    <script src="js/jq/jquery-1.12.4.js" type="text/javascript"></script>
</head>
<body>
    <!-- 只读:只能读不能写,可以提交给服务器程序 -->
    用户名:<input type="text" value="zs" readonly="true"/><br/>
    <!-- 禁用,不能读也不能写,不能提交给服务器程序 -->
    体重:<input type="text" value="80" disabled/><br/>
    年龄:<input type="text" value="18"/><br/>

    <hr/>
    性别:
        <div id="sex">
            <input type="radio" name="sex" value="男的" checked="true">男
            <input type="radio" name="sex" value="女的">女
        </div>
       
        <br/>

    爱好:
        <input type="checkbox" name="hobby" value="eat" checked="true">吃
        <input type="checkbox" name="hobby" value="drink" checked="true">喝
        <input type="checkbox" name="hobby" value="play">玩
        <input type="checkbox" name="hobby" value="happy">乐
        <br/>

    家乡:
        <select id="hometown" multiple>
            <option value="GD">广东</option>
            <option value="GX">广西</option>
            <option value="GN">广南</option>
            <option value="GB">广北</option>
        </select>
    </p>
    <button id="one">表单属性过滤 - 是否可用</button>
    <button id="two">表单属性过滤 - 单选框选中</button>
    <button id="three">表单属性过滤 - 复选框选中</button>
    <button id="four">表单属性过滤 - 下拉列表框选中</button>
    <script>
        $("#four").click(function(){
            // var jiaXiang = $("#hometown option:selected").val() ;
            var jiaXiang = $("#hometown option:selected").text() ;
            alert(jiaXiang) ;
        }) ;

        $("#three").click(function(){
            // 选择选中的复选框集合
            var checkboxNodes = $("input[name=hobby]:checked") ;
            
            // 循环遍历选中的复选框
            for(var i=0;i<checkboxNodes.length;i++) {
                // 获取当前复选框的 value 值
                // 注意:原生的JS对象与JQ对象
                var hobby = $(checkboxNodes[i]).val() ;
                alert(hobby) ;
            }
        }) ;


        $("#two").click(function(){

            // var sex = $("#sex input:checked").val() ;
            var sex = $("input[name=sex]:checked").val() ;
            alert(sex);
        }) ;



        $("#one").click(function(){
            // 选择可用表单元素
            $("input:enabled").css("color","yellow") ;

            // 选择不可用表单元素
            $("input:disabled").css("color","red") ;
        }) ;
    </script>
</body>
</html>

8、表单选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 第一:导入 JQ 文件 -->
    <script src="js/jq/jquery-1.12.4.js" type="text/javascript"></script>
</head>
<body>
    <!-- 只读:只能读不能写,可以提交给服务器程序 -->
    用户名:<input type="text" value="zs" readonly="true"/><br/>
    <!-- 禁用,不能读也不能写,不能提交给服务器程序 -->
    体重:<input type="text" value="80" disabled/><br/>
    年龄:<input type="text" value="18"/><br/>

    <hr/>
    性别:
        <div id="sex">
            <input type="radio" name="sex" value="男的" checked="true">男
            <input type="radio" name="sex" value="女的">女
        </div>
       
        <br/>

    爱好:
        <input type="checkbox" name="hobby" value="eat" checked="true">吃
        <input type="checkbox" name="hobby" value="drink" checked="true">喝
        <input type="checkbox" name="hobby" value="play">玩
        <input type="checkbox" name="hobby" value="happy">乐
        <br/>

    家乡:
        <select id="hometown" multiple>
            <option value="GD">广东</option>
            <option value="GX">广西</option>
            <option value="GN">广南</option>
            <option value="GB">广北</option>
        </select>
    </p>
    <button id="one">表单元素选择</button>

    <script>
    
        $("#one").click(function(){
           // $(":text").css("color","red") ;
           
           // var sex = $(":radio:checked").val() ;
           // alert(sex) ;

           $(":button").css("color","white").css("background","black") ;
        }) ;
    </script>
</body>
</html>

9、节点操作

添加-JQ -原生

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 第一:导入JQ -->
    <script src="js/jq/jquery-1.12.4.js"></script>
    <title>Document</title>
</head>
<body>
    <div id="gg">
        <p>天天向上</p>
    </div>

    <button id="btnAdd1">添加 - JQ</button>
    <button id="btnAdd2">添加 - 原生</button>

    
    <!-- 第二:使用JQ(对象方法、属性)-->
    <script>
        $("#btnAdd1").click(function(){
            // 第一:创建节点,同时还给节点添加文本内容
            // 当然,我们还可以给元素节点指定属性
            var pNode = $("<p align='center'>好好学习</p>") ;
            // 第二:把创建的节点,添加到指定位置中
            // 1.以最后一个子元素的方式添加
            // $("#gg").append(pNode) ;
            // pNode.appendTo($("#gg")) ;

            // 2.以第一个子元素的方式添加
            // $("#gg").prepend(pNode) ;
            pNode.prependTo($("#gg")) ;
        }) ;

        $("#btnAdd2").click(function(){
            // 第一:创建节点   
            var pNode = document.createElement("p");
            pNode.setAttribute("align","center") ;
            pNode.innerText = "好好学习" ;

            // 第二:把创建的节点,添加到指定位置中
            var ggDiv = document.getElementById("gg") ;
            ggDiv.appendChild(pNode) ;
        }) ;
    </script>
</body>
</html>

插入

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 第一:导入JQ -->
    <script src="js/jq/jquery-1.12.4.js"></script>
    <title>Document</title>
</head>
<body>
    <ul>
        <li>好好学习</li>
        <li>天天向上</li>
        <li>GOOD GOOD STUDY</li>
        <li>DAY DAY UP</li>
    </ul>

    <button id="btnAdd1">插入</button>


    
    <!-- 第二:使用JQ(对象方法、属性)-->
    <script>
        $("#btnAdd1").click(function(){
            // 第一:创建节点
            var liNode = $("<li>你好</li>") ;

            // 第二:插入节点
            // $("li:eq(1)").after(liNode) ;
            // liNode.insertAfter( $("li:eq(1)"))

            // $("li:eq(1)").before(liNode) ;
            liNode.insertBefore( $("li:eq(1)"))
        }) ;

    </script>
</body>
</html>

删除节点-remove-detach-empty

克隆(复制)节点

动态绑定事件

动态附加数据

获取附加数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 第一:导入JQ -->
    <script src="js/jq/jquery-1.12.4.js"></script>
    <title>Document</title>
</head>
<body>
    <ul>
        <li>好好学习</li>
        <li>天天向上</li>
        <li class="en">GOOD GOOD STUDY</li>
        <li class="en">DAY DAY UP</li>
    </ul>

    
    <button id="btnDel1">删除节点 - remove</button>
    <button id="btnDel2">删除节点 - detach</button>
    <button id="btnDel3">删除节点 - empty</button>

    <button id="btnDel4">克隆(复制)节点</button>

    <button id="btnDel5">动态绑定事件</button>
    <button id="btnDel6">动态附加数据</button>

    <button id="btnDel7">获取附加数据</button>


    
    <!-- 第二:使用JQ(对象方法、属性)-->
    <script>
        function bb() {
            alert("OK?")
        }

        $("#btnDel1").click(function(){
            // $("ul li").remove() ;
            $("ul li").remove("li[class!=en]") ;
        }) ;

        $("#btnDel2").click(function(){
            // 与remove方法不同,detach会保留绑定的事件(动态添加,而不是写死的)、附加的数据
            var aa = $("ul li:eq(2)").detach() ;

            $("ul").append(aa) ;
        }) ;

        $("#btnDel3").click(function(){
            // 清空某个节点下所有的后代节点
            // $("ul").empty() ;

            // 删除选中的节点
            $("ul li").remove() ;
        }) ;

        $("#btnDel4").click(function(){
           // 第一:克隆节点
           // var cloneLi = $("ul li:eq(2)").clone() ;
           // var cloneLi = $("ul li:eq(2)").clone(true) ;
           var cloneLi = $("ul li:eq(2)").clone(false) ;

           // 第二:添加到最后一个子元素
           $("ul").append(cloneLi) ;
        }) ;


        // 给第三个li节点动态绑定单击事件
        $("#btnDel5").click(function(){
            $("ul li:eq(2)").click(function(){
                alert("你好");
            }) ;
        }) ;

        // 给第三个li节点动态绑定(附加)数据
        $("#btnDel6").click(function(){
            $("ul li:eq(2)").data("name","zs") ;
        }) ;

        // 获取第三个li节点动态绑定(附加)数据
        $("#btnDel7").click(function(){
            // var uname = $("ul li:eq(2)").data("name") ;
            var uname = $("ul li:last").data("name") ;
            alert(uname) ;
        }) ;

    </script>
</body>
</html>

替换节点

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 第一:导入JQ -->
    <script src="js/jq/jquery-1.12.4.js"></script>
    <title>Document</title>
</head>
<body>
    <ul>
        <li>one</li>
        <li id="er">two</li>
        <li title="one">three</li>
        <li>four</li>
    </ul>

    <button id="btn">替换节点</button>


    
    <!-- 第二:使用JQ(对象方法、属性)-->
    <script>
        $("#btn").click(function(){
            // 创建li节点
            var $li = $("<li>好好学习,天天向上</li>") ;

            // 替换
            // $("#er").replaceWith($li) ;
            $li.replaceAll($("#er"));
        }) ;

    </script>
</body>
</html>

包裹节点

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 第一:导入JQ -->
    <script src="js/jq/jquery-1.12.4.js"></script>
    <title>Document</title>
</head>
<body>
    <b>好好学习</b>

    <b>天天向上</b>

    <b><u>少点LOL</u></b>

    <button id="btn">包裹节点</button>


    
    <!-- 第二:使用JQ(对象方法、属性)-->
    <script>
        $("#btn").click(function(){
            // $("b").wrap("<p></p>") ;
            // $("b").wrapAll("<p></p>") ;
            $("b").wrapInner("<p></p>") ;
        }) ;

    </script>
</body>
</html>

10、属性操作

添加属性

获取属性值

删除属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 第一:导入JQ -->
    <script src="js/jq/jquery-1.12.4.js"></script>
    <title>Document</title>
</head>
<body>
    <font>好好学习,天天向上</font>

    <p/>
    <button id="btn1">添加属性</button>
    <button id="btn2">获取属性值</button>
    <button id="btn3">删除属性</button>



    
    <!-- 第二:使用JQ(对象方法、属性)-->
    <script>
        $("#btn1").click(function(){
           $("font").prop("color","red") ;
           $("font").attr("size","6") ;

            // $("font").prop("aaa","bbb") ;
            // $("font").attr("xxx","yyy") ;
        }) ;

        $("#btn2").click(function(){
           var yanSe = $("font").prop("color") ;
           var daXiao = $("font").attr("size") ;

           console.log(yanSe,daXiao);
        }) ;

        $("#btn3").click(function(){
            $("font").removeProp("color") ;
            $("font").removeAttr("size") ;
        }) ;

    </script>
</body>
</html>

11、样式操作

设置样式

追加样式

移除样式

切换样式

判断是否存在某个类

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 第一:导入JQ -->
    <script src="js/jq/jquery-1.12.4.js"></script>

    <style>
        .aa {
            font-size: 50px;
            color:blue ;
        }

        .bb {
            font-family: 隶书;
            text-decoration: underline;
        }

    </style>


    <title>Document</title>
</head>
<body>
    <p>好好学习,天天向上</p>

    <p/>
    <button id="btn1">设置样式</button>
    <button id="btn2">追加样式</button>
    <button id="btn3">移除样式</button>
    <button id="btn4">切换样式</button>
    <button id="btn5">判断是否存在某个类</button>

    <!-- 第二:使用JQ(对象方法、属性)-->
    <script>
        $("#btn1").click(function(){
            // 1)设置样式
            // $("p").prop("style","color:red;font-size:50px") ;
            // $("p").attr("style","color:red;font-size:50px") ;
            // $("p").css("color","red").css("font-size","50px") ;
            // $("p").css({'color':'red','font-size':'50px'}) ;
            
            // 2)追加样式
            // $("p").prop("class","aa")
            $("p").addClass("aa") ;

        }) ;

        $("#btn2").click(function(){
            $("p").addClass("bb")
        }) ;

        $("#btn3").click(function(){
            $("p").removeClass("bb")
        }) ;
        
        $("#btn4").click(function(){
            $("p").toggleClass("aa")
        }) ;

        $("#btn5").click(function(){
            var bl = $("p").hasClass("aa")
            alert(bl)
        }) ;

        

    </script>
</body>
</html>

12、内容操作

设置内容

获取内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 第一:导入JQ -->
    <script src="js/jq/jquery-1.12.4.js"></script>

    <title>Document</title>
</head>
<body>
    <p>好好学习,天天向上</p>

    <br/>
    <br/>

    <button id="btn1">设置内容</button>
    <button id="btn2">获取内容</button>
    

    <!-- 第二:使用JQ(对象方法、属性)-->
    <script>
        $("#btn1").click(function(){
            //$("p").text("<b>必须滴</b>") ;
            $("p").html("<b>必须滴</b>") ;
        }) ;

        $("#btn2").click(function(){
           // var neiRong = $("p").text() ;
           var neiRong = $("p").html() ;

           console.log(neiRong);
        }) ;

    </script>
</body>
</html>

13、表单操作

设置内容

获取内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 第一:导入JQ -->
    <script src="js/jq/jquery-1.12.4.js"></script>

    


    <title>Document</title>
</head>
<body>
    帐号:<input type="text" name="username" value="匿名"/>

    <br/>
    <button id="btn1">设置内容</button>
    <button id="btn2">获取内容</button>
    

    <!-- 第二:使用JQ(对象方法、属性)-->
    <script>
        $("#btn1").click(function(){
           $("input[name=username]").val("张三") ;
        }) ;

        $("#btn2").click(function(){
            var uname = $("input[name=username]").val() ;
            console.log(uname);
        }) ;


    </script>
</body>
</html>

14、遍历节点

children-所有儿子

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 第一:导入JQ -->
    <script src="js/jq/jquery-1.12.4.js"></script>

    


    <title>Document</title>
</head>
<body>
    <ul>
        <li>大哥</li>
        <li>二哥</li>
        <li>三妹</li>
    </ul>

    <button id="btn">children-所有儿子</button>
    

    <!-- 第二:使用JQ(对象方法、属性)-->
    <script>
        $("#btn").click(function(){
            // 获取当前节点下的所有子节点
            var sons = $("ul").children() ;
            // var sons = $("ul li") ;

            console.log(sons.length);

            var one = $(sons[0]).text() ;
            console.log(one);
        }) ;

        

        

    </script>
</body>
</html>

next-找下一个弟弟

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 第一:导入JQ -->
    <script src="js/jq/jquery-1.12.4.js"></script>

    


    <title>Document</title>
</head>
<body>
    <ul>
        <li>大哥</li>
        <li>二哥</li>
        <li class="mm">三妹</li>
    </ul>

    <button id="btn">next-找下一个弟弟</button>
    

    <!-- 第二:使用JQ(对象方法、属性)-->
    <script>
        $("#btn").click(function(){
           var didiNode = $("ul li:eq(0)").next() ;

           // var didiNode = $("ul li:eq(0) + li") ;


           console.log(didiNode.text());
        }) ;

        

        

    </script>
</body>
</html>

nextAll-找所有弟弟

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 第一:导入JQ -->
    <script src="js/jq/jquery-1.12.4.js"></script>

    


    <title>Document</title>
</head>
<body>
    <ul>
        <li>大哥</li>
        <li>二哥</li>
        <li class="mm">三妹</li>
    </ul>

    <button id="btn">nextAll-找所有弟弟</button>
    

    <!-- 第二:使用JQ(对象方法、属性)-->
    <script>
        $("#btn").click(function(){
           // var didiNodes = $("ul li:eq(0)").nextAll() ;

           var didiNodes = $("ul li:eq(0) ~ li") ;


           console.log($(didiNodes[0]).text());
           console.log($(didiNodes[1]).text());
        }) ;

        

        

    </script>
</body>
</html>

prev-找上一个哥哥

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 第一:导入JQ -->
    <script src="js/jq/jquery-1.12.4.js"></script>

    


    <title>Document</title>
</head>
<body>
    <ul>
        <li>大哥</li>
        <li>二哥</li>
        <li class="mm">三妹</li>
    </ul>

    <button id="btn">prev-找上一个哥哥</button>
    

    <!-- 第二:使用JQ(对象方法、属性)-->
    <script>
        $("#btn").click(function(){
           var gegeNode = $(".mm").prev() ;

           console.log(gegeNode.text());
           
        }) ;

        

        

    </script>
</body>
</html>

prevAll-找所有的哥哥们

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 第一:导入JQ -->
    <script src="js/jq/jquery-1.12.4.js"></script>

    


    <title>Document</title>
</head>
<body>
    <ul>
        <li>大哥</li>
        <li>二哥</li>
        <li class="mm">三妹</li>
    </ul>

    <button id="btn">prevAll-找所有的哥哥们</button>
    

    <!-- 第二:使用JQ(对象方法、属性)-->
    <script>
        $("#btn").click(function(){
           var gegeNodes = $(".mm").prevAll() ;

           console.log($(gegeNodes[0]).text());
           console.log($(gegeNodes[1]).text());
        }) ;

        

        

    </script>
</body>
</html>

siblings - 找所有的兄弟姐妹们

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 第一:导入JQ -->
    <script src="js/jq/jquery-1.12.4.js"></script>

    


    <title>Document</title>
</head>
<body>
    <ul>
        <li>大哥</li>
        <li>二哥</li>
        <li class="mm">三妹</li>
    </ul>

    <button id="btn">siblings - 找所有的兄弟姐妹们</button>
    

    <!-- 第二:使用JQ(对象方法、属性)-->
    <script>
        $("#btn").click(function(){
           var xiongDiNodes = $("ul li:eq(1)").siblings() ;

           console.log(xiongDiNodes.length);
           console.log($(xiongDiNodes[0]).text());
           console.log($(xiongDiNodes[1]).text());
        }) ;

        

        

    </script>
</body>
</html>

parent - 找上一个父节点

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 第一:导入JQ -->
    <script src="js/jq/jquery-1.12.4.js"></script>

    


    <title>Document</title>
</head>
<body>
    <ul class="father">
        <li>大哥</li>
        <li>二哥</li>
        <li class="mm">三妹</li>
    </ul>

    <button id="btn">parent - 找上一个父节点</button>
    

    <!-- 第二:使用JQ(对象方法、属性)-->
    <script>
        $("#btn").click(function(){
           var ulNode = $(".mm").parent() ;

           var classValue = ulNode.prop("class")

           console.log(classValue);
          
        }) ;

        

        

    </script>
</body>
</html>

parents - 找所有的父节点

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 第一:导入JQ -->
    <script src="js/jq/jquery-1.12.4.js"></script>

    


    <title>Document</title>
</head>
<body>
    <ul class="father">
        <li>大哥</li>
        <li>二哥</li>
        <li class="mm">三妹</li>
    </ul>

    <button id="btn">parents - 找所有的父节点</button>
    

    <!-- 第二:使用JQ(对象方法、属性)-->
    <script>
        $("#btn").click(function(){
           var zuXianNodes = $(".mm").parents() ;

    
           console.log("祖先个数:",zuXianNodes.length);
          
        }) ;

        

        

    </script>
</body>
</html>

closest - 向上匹配节点,并返回第一个匹配的节点

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 第一:导入JQ -->
    <script src="js/jq/jquery-1.12.4.js"></script>

    


    <title>Document</title>
</head>
<body>
    <div class="gen">
        <div class="father" data-test="second">
            <div class="yeye">
                <div class="father" data-test="first">
                    <div id="gg">好好学习</div>
                </div>
            </div>
        </div>
    </div>
    <button id="btn">closest - 向上匹配节点,并返回第一个匹配的节点</button>
    
    <!-- 第二:使用JQ(对象方法、属性)-->
    <script>
        $("#btn").click(function(){
           var node = $("#gg").closest(".father") ;

           var v = node.attr("data-test") ;

           // data()方法,专门用于操作 data- 属性的设置和获取 
           // var v = node.data("test") ;

           console.log(v);

           // 对比 closest vs parents
        }) ;

    </script>
</body>
</html>

15、事件绑定

原生JS实现


JQ绑定 bind-one-简写


16、事件解绑

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/jq/jquery-1.12.4.js"></script>
</head>
<body>
    <button id="btn1">点我看看</button>
    <button id="btn2">事件绑定</button>
    <button id="btn3">事件解绑</button>
    
    

    <script>
        
        // 绑定事件
        $("#btn2").click(function(){
            // 动态绑定事件
            // $("#btn1").bind("click",function(){
            //     alert("流氓")
            // }) ;

            $("#btn1").click(function(){
                alert("流氓...")
            }) ;

            // $("#btn1").on("click",function(){
            //     alert("流氓")
            // }) ;
        }) ;
        // 解绑事件
        $("#btn3").click(function(){
            // $("#btn1").unbind("click") ;
            
            $("#btn1").off("click") ;
        }) ;


    </script>




</body>
</html>

17、合成事件

显示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/jq/jquery-1.12.4.js"></script>
</head>
<body>
    <button id="btn1">合成事件</button>
   

    <script>
        // 绑定经过事件
        // $("#btn1").mouseover(function(){
        //      console.log("好好学习");
        // }) ;

        // 绑定离开事件
        // $("#btn1").mouseout(function(){
        //     console.log("天天向上-不要睡觉了");
        // }) ;

        $("#btn1").hover(function() {
            console.log("好好学习");
        },function(){
            console.log("天天向上-不要睡觉了");
        }) ;
       
    </script>

</body>
</html>

toggle 合成显示和隐藏

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/jq/jquery-1.12.4.js"></script>
</head>
<body>
    <div id="gg">好好学习,天天向上</div>

    <button id="btn1">合成事件</button>
   

    <script>
   

        $("#btn1").click(function(){
            $("#gg").toggle() ;
        })  ;
       
    </script>

</body>
</html>

trigger 事件触发

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/jq/jquery-1.12.4.js"></script>
</head>
<body>
    <div id="gg">好好学习,天天向上</div>

    <button id="btn1">合成事件</button>
   
    <script>
        $("#btn1").click(function(){
            $("#gg").click(function(){
                alert("必须滴")
            }) ;
        })  ;
       
        // 自动触发单击btn1按钮
        $("#btn1").trigger("click") ;
        
    </script>
</body>
</html>
 
posted @   一只菜喵程序媛  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示