From d04ec41b8c58f16d49042254d018b336248c182a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=99=88=E6=9E=AB?= <1687425871@qq.com>
Date: Tue, 6 Dec 2022 02:19:02 +0000
Subject: [PATCH 1/3] =?UTF-8?q?=E7=AC=94=E8=AE=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: 陈枫 <1687425871@qq.com>
---
...36\346\200\247\347\254\224\350\256\260.md" | 344 +++++++++++++++
...13\344\273\266\347\254\224\350\256\260.md" | 374 ++++++++++++++++
...71\350\261\241\347\254\224\350\256\260.md" | 76 ++++
...71\346\263\225\347\254\224\350\256\260.md" | 257 +++++++++++
...022-11-29-ajax\347\254\224\350\256\260.md" | 401 ++++++++++++++++++
...2-11-30-jqajax\347\254\224\350\256\260.md" | 215 ++++++++++
...-12-01-Promise\347\254\224\350\256\260.md" | 143 +++++++
...60\347\213\261\347\254\224\350\256\260.md" | 54 +++
8 files changed, 1864 insertions(+)
create mode 100644 "03\351\231\210\346\236\253/\347\254\224\350\256\260/2022-11-22-\346\223\215\344\275\234\345\261\236\346\200\247\347\254\224\350\256\260.md"
create mode 100644 "03\351\231\210\346\236\253/\347\254\224\350\256\260/2022-11-23-jquery\344\272\213\344\273\266\347\254\224\350\256\260.md"
create mode 100644 "03\351\231\210\346\236\253/\347\254\224\350\256\260/2022-11-24-jquery\344\272\213\344\273\266\345\257\271\350\261\241\347\254\224\350\256\260.md"
create mode 100644 "03\351\231\210\346\236\253/\347\254\224\350\256\260/2022-11-28-jQuery\346\226\271\346\263\225\347\254\224\350\256\260.md"
create mode 100644 "03\351\231\210\346\236\253/\347\254\224\350\256\260/2022-11-29-ajax\347\254\224\350\256\260.md"
create mode 100644 "03\351\231\210\346\236\253/\347\254\224\350\256\260/2022-11-30-jqajax\347\254\224\350\256\260.md"
create mode 100644 "03\351\231\210\346\236\253/\347\254\224\350\256\260/2022-12-01-Promise\347\254\224\350\256\260.md"
create mode 100644 "03\351\231\210\346\236\253/\347\254\224\350\256\260/2022-12-01-\350\247\243\345\206\263\345\233\236\350\260\203\345\234\260\347\213\261\347\254\224\350\256\260.md"
diff --git "a/03\351\231\210\346\236\253/\347\254\224\350\256\260/2022-11-22-\346\223\215\344\275\234\345\261\236\346\200\247\347\254\224\350\256\260.md" "b/03\351\231\210\346\236\253/\347\254\224\350\256\260/2022-11-22-\346\223\215\344\275\234\345\261\236\346\200\247\347\254\224\350\256\260.md"
new file mode 100644
index 0000000..5724208
--- /dev/null
+++ "b/03\351\231\210\346\236\253/\347\254\224\350\256\260/2022-11-22-\346\223\215\344\275\234\345\261\236\346\200\247\347\254\224\350\256\260.md"
@@ -0,0 +1,344 @@
+# DOM操作
+
+jQuery也提供了对HTML节点的操作,而且在原生js的基础之上进行了优化,使用起来更加方便。
+ 常用的从几个方面来操作,查找元素(选择器已经实现);创建节点对象;访问和设置节点对象的值,以及属性;添加节点;删除节点;删除、添加、修改、设定节点的CSS样式等。**注意:以下的操作方式只适用于jQuery对象。**
+
+jQuery中的DOM操作可分为:
+
+- 样式操作
+- 内容及Value属性值操作
+- 节点操作
+- 节点属性操作
+- 节点遍历
+- CSS-DOM操作
+
+## 获取DOM信息
+
+利用jQuery对象的若干方法,我们直接可以获取DOM的高宽等信息,而无需针对不同浏览器编写特定代码:
+
+```js
+attr()和removeAttr()方法用于操作DOM节点的属性:
+
+//
...
+var div = $('#test-div');
+div.attr('data'); // undefined, 属性不存在
+div.attr('name'); // 'Test'
+div.attr('name', 'Hello'); // div的name属性变为'Hello'
+div.removeAttr('name'); // 删除name属性
+div.attr('name'); // undefined
+```
+
+**prop()方法和attr()类似,但是HTML5规定有一种属性在DOM节点中可以没有值,只有出现与不出现两种**,例如:
+
+```js
+
+```
+
+等价于:
+
+```js
+
+```
+
+attr()和prop()对于属性checked处理有所不同:
+
+```js
+var radio = $('#test-radio');
+radio.attr('checked'); // 'checked'
+radio.prop('checked'); // true
+```
+
+prop()返回值更合理一些。不过,用is()方法判断更好:
+
+```js
+var radio = $('#test-radio');
+radio.is(':checked'); // true
+```
+
+类似的属性还有selected,处理时最好用is(':selected')。
+
+### 设置属性
+
+因为prop属性不适用于自定义属性所以设置属性使用attr方法
+
+attr('属性','属性值');
+
+```js
+//设置北京节点的name属性的值为dabeijing
+$("#bj").attr("name", "dabeijing");
+
+//添加自定义属性
+$("#bj").attr("aa", "aabb");
+```
+
+### 移除属性
+
+| 方法 | 说明 |
+| -------------------- | ----------------------- |
+| removeAttr('属性名') | 删除属性 |
+| removeProp('属性名') | 删除bool类型的属性,少用 |
+
+```js
+//删除北京节点的name属性并检验name属性是否存在
+$("#bj").removeAttr("name");
+
+//删除hobby的CheckBox属性
+var hobby_type = $("#hobby").removeProp("checkbox");
+```
+
+### attr和prop区别
+
+attr(固有属性,自定义属性) prop(返回值是bool的属性)
+
+- prop获取返回的值类型是bool的时候,返回的是true或者false
+- 如果是自定义属性,prop获取不到,attr可以
+
+## 修改CSS
+
+jQuery对象有“批量操作”的特点,这用于修改CSS实在是太方便了。考虑下面的HTML结构:
+
+```js
+
+
+ - JavaScript
+ - Java
+ - Python
+ - Swift
+ - Scheme
+
+```
+
+要高亮显示动态语言,调用jQuery对象的css('name', 'value')方法,我们用一行语句实现:
+
+```js
+'use strict';
+$('#test-css li.dy>span').css('background-color', '#ffd351').css('color', 'red');
+
+
+JavaScript
+Java
+Python
+Swift
+Scheme
+```
+
+注意,jQuery对象的所有方法都返回一个jQuery对象(可能是新的也可能是自身),这样我们可以进行链式调用,非常方便。
+
+jQuery对象的css()方法可以这么用:
+
+```js
+var div = $('#test-div');
+div.css('color'); // '#000033', 获取CSS属性
+div.css('color', '#336699'); // 设置CSS属性
+div.css('color', ''); // 清除CSS属性
+```
+
+为了和JavaScript保持一致,CSS属性可以用'background-color'和'backgroundColor'两种格式。
+
+css()方法将作用于DOM节点的style属性,具有最高优先级。如果要修改class属性,可以用jQuery提供的下列方法:
+
+```js
+var div = $('#test-div');
+div.hasClass('highlight'); // false, class是否包含highlight
+div.addClass('highlight'); // 添加highlight这个class
+div.removeClass('highlight'); // 删除highlight这个class
+```
+
+## 修改Text和HTML
+
+jQuery对象的text()和html()方法分别获取节点的文本和原始HTML文本,例如,如下的HTML结构:
+
+```js
+
+
+ - JavaScript
+ - Java & JavaScript
+
+```
+
+分别获取文本和HTML:
+
+```js
+$('#test-ul li[name=book]').text(); // 'Java & JavaScript'
+$('#test-ul li[name=book]').html(); // 'Java & JavaScript'
+```
+
+如何设置文本或HTML?jQuery的API设计非常巧妙:无参数调用text()是获取文本,传入参数就变成设置文本,HTML也是类似操作,自己动手试试:
+
+```js
+'use strict';
+var j1 = $('#test-ul li.js');
+var j2 = $('#test-ul li[name=book]');
+j1.html('JavaScript');
+j2.text('JavaScript & ECMAScript');
+
+
+// JavaScript
+// Java & JavaScript
+```
+
+一个jQuery对象可以包含0个或任意个DOM对象,它的方法实际上会作用在对应的每个DOM节点上。在上面的例子中试试:
+
+```js
+$('#test-ul li').text('JS'); // 是不是两个节点都变成了JS?
+```
+
+所以jQuery对象的另一个好处是我们可以执行一个操作,作用在对应的一组DOM节点上。即使选择器没有返回任何DOM节点,调用jQuery对象的方法仍然不会报错:
+
+```js
+// 如果不存在id为not-exist的节点:
+$('#not-exist').text('Hello'); // 代码不报错,没有节点被设置为'Hello'
+```
+
+这意味着jQuery帮你免去了许多if语句。
+
+*****
+
+## 操作表单
+
+对于表单元素,jQuery对象统一提供val()方法获取和设置对应的value属性:
+
+```js
+/*
+
+
+
+*/
+var
+ input = $('#test-input'),
+ select = $('#test-select'),
+ textarea = $('#test-textarea');
+
+input.val(); // 'test'
+input.val('abc@example.com'); // 文本框的内容已变为abc@example.com
+
+select.val(); // 'BJ'
+select.val('SH'); // 选择框已变为Shanghai
+
+textarea.val(); // 'Hello'
+textarea.val('Hi'); // 文本区域已更新为'Hi'
+```
+
+**可见,一个val()就统一了各种输入框的取值和赋值的问题。**
+
+## 修改DOM结构
+
+直接使用浏览器提供的API对DOM结构进行修改,不但代码复杂,而且要针对浏览器写不同的代码。
+
+有了jQuery,我们就专注于操作jQuery对象本身,底层的DOM操作由jQuery完成就可以了,这样一来,修改DOM也大大简化了。
+
+### 添加DOM
+
+要添加新的DOM节点,除了通过jQuery的html()这种暴力方法外,还可以用append()方法,例如:
+
+```js
+
+
+ - JavaScript
+ - Python
+ - Swift
+
+
+```
+
+如何向列表新增一个语言?首先要拿到``节点:
+
+```js
+var ul = $('#test-div>ul');
+```
+
+然后,调用append()传入HTML片段:
+
+```js
+ul.append('- Haskell
');
+```
+
+除了接受字符串,append()还可以传入原始的DOM对象,jQuery对象和函数对象:
+
+```js
+// 创建DOM对象:
+var ps = document.createElement('li');
+ps.innerHTML = 'Pascal';
+// 添加DOM对象:
+ul.append(ps);
+
+// 添加jQuery对象:
+ul.append($('#scheme'));
+
+// 添加函数对象:
+ul.append(function (index, html) {
+ return '- Language - ' + index + '
';
+});
+```
+
+传入函数时,要求返回一个字符串、DOM对象或者jQuery对象。因为jQuery的append()可能作用于一组DOM节点,只有传入函数才能针对每个DOM生成不同的子节点。
+
+**append()把DOM添加到最后,prepend()则把DOM添加到最前。**
+
+==另外注意,如果要添加的DOM节点已经存在于HTML文档中,它会首先从文档移除,然后再添加,也就是说,用append(),你可以移动一个DOM节点。==
+
+如果要把新节点插入到指定位置,例如,JavaScript和Python之间,那么,可以先定位到JavaScript,然后用after()方法:
+
+```js
+var js = $('#test-div>ul>li:first-child');
+js.after('- Lua
');
+```
+
+也就是说,同级节点可以用after()或者before()方法。
+
+### 删除节点
+
+要删除DOM节点,拿到jQuery对象后直接调用remove()方法就可以了。如果jQuery对象包含若干DOM节点,实际上可以一次删除多个DOM节点:
+
+```js
+var li = $('#test-div>ul>li');
+li.remove(); // 所有- 全被删除
+```
+
+清空清除所选元素的内容则用empty()
+
+```html
+
+
+ - 列表项1
+ 我是段落1
+ - 列表项2
+ 我是段落2
+ - 列表项3
+
+
+
+$('ul').empty();//所有ul的子节点都被移除
+
+```
+
+**********
+
+### 遍历元素each()
+
+一个通用的迭代函数,它可以用来无缝迭代对象和数组。数组和类似数组的对象通过一个长度属性(如一个函数的参数对象)来迭代数字索引,从0到length - 1,其他对象通过其属性名进行迭代。
+
+```js
+//遍历元素each方法格式
+$(selector).each(function(index,element))
+```
+
+- 参数function为遍历时的回调函数
+
+- index 为遍历元素的序列号,从0开始
+
+- element为当前的元素(===this),此时是dom元素
+
+```js
+//遍历:each()
+ $('span').each(function (index,element){
+ console.log(index);
+ // console.log(element);
+ console.log(this);//g
+ })
+```
+
diff --git "a/03\351\231\210\346\236\253/\347\254\224\350\256\260/2022-11-23-jquery\344\272\213\344\273\266\347\254\224\350\256\260.md" "b/03\351\231\210\346\236\253/\347\254\224\350\256\260/2022-11-23-jquery\344\272\213\344\273\266\347\254\224\350\256\260.md"
new file mode 100644
index 0000000..ee704dc
--- /dev/null
+++ "b/03\351\231\210\346\236\253/\347\254\224\350\256\260/2022-11-23-jquery\344\272\213\344\273\266\347\254\224\350\256\260.md"
@@ -0,0 +1,374 @@
+## (八)事件
+
+因为JavaScript在浏览器中以单线程模式运行,页面加载后,一旦页面上所有的JavaScript代码被执行完后,就只能依赖触发事件来执行JavaScript代码。
+
+**浏览器在接收到用户的鼠标或键盘输入后,会自动在对应的DOM节点上触发相应的事件。如果该节点已经绑定了对应的JavaScript处理函数,该函数就会自动调用。**
+
+由于不同的浏览器绑定事件的代码都不太一样,所以用jQuery来写代码,就屏蔽了不同浏览器的差异,我们总是编写相同的代码。
+
+举个例子,假设要在用户点击了超链接时弹出提示框,我们用jQuery这样绑定一个click事件:
+
+```js
+/* HTML:
+ *
+ * 点我试试
+ *
+ */
+
+// 获取超链接的jQuery对象:
+var a = $('#test-link');
+a.on('click', function () {
+ alert('Hello!');
+});
+```
+
+on方法用来绑定一个事件,我们需要传入事件名称和对应的处理函数。
+
+**另一种更简化的写法是直接调用click()方法**:
+
+```js
+a.click(function () {
+ alert('Hello!');
+});
+```
+
+==两者完全等价。我们通常用后面的写法。==
+
+jQuery能够绑定的事件主要包括:
+
+********
+
+### 鼠标事件
+
+| 事件 | 说明 |
+| --------- | ------------------------------------------------------------ |
+| click | 鼠标单击事件 |
+| dblclick | 鼠标双击事件 |
+| mouseover | 鼠标移入事件 |
+| mouseout | 鼠标移出事件 |
+| mousedown | 鼠标按下事件 |
+| mouseup | 鼠标松开事件 |
+| mousemove | 鼠标在DOM内部移动时触发 |
+| hover | 鼠标进入和退出时触发两个函数,相当于mouseenter加上mouseleave。 |
+
+#### click和dblclick
+
+```js
+
+
+```
+
+#### mouseover和mouseout
+
+当用户将鼠标移入到某个元素上面时,就会触发mouseover事件。如果将鼠标移出某个元素时,就 会触发mouseout事件。mouseover和mouseout平常都是形影不离的。
+
+修改字体颜色:
+
+```html
+
+调试代码
+调试代码
+```
+
+```js
+//链式调用
+$(function () {
+ $('div').mouseover(
+ function () {
+ $(this).css('color', 'red');
+ }
+ ).mouseout(
+ function () {
+ $(this).css('color', 'rgb(0, 0, 0)');
+ }
+ )
+ })
+```
+
+#### mousedown 和mouseup
+
+当用户按下鼠标时,会触发mousedown事件;当用户松开鼠标时,则会触发mouseup事件。 mousedown表示鼠标按下的一瞬间所触发的事件,而mouseup表示鼠标松开的一瞬间所触发的事 件。当然我们都知道,只有“先按下”才能“再松开”。
+
+鼠标点击放开改变背景颜色:html代码和上面一样
+
+```js
+
+```
+
+#### hover()
+
+**当鼠标进入div设置背景为红色,当鼠标移出div设置背景为绿色,默认背景为黑色**
+
+```html
+.outer {
+ width: 200px;
+ height: 200px;
+ background: black;
+}
+
+
+```
+
+```js
+$('.outer').hover(function () {
+ $(this).css('background', 'red');
+}, function () {
+ $(this).css('background', 'green');
+});
+```
+
+*********
+
+### 键盘事件
+
+键盘事件仅作用在当前焦点的DOM上,通常是``和`