普通人小陆 發表於 2023-7-1 09:23:00

day13 前端开发

<h1 id="day13-前端javascript">day13 前端JavaScript</h1>
<p>今日概要:</p>
<ul>
<li>
<p>JavaScript,是一门编程语言。浏览器就是JavaScript语言的解释器。</p>
</li>
<li>
<p>DOM和BOM</p>
<pre><code class="language-python">相当于编程语言内置的模块。
例如:Python中的re、random、time、json模块等。
</code></pre>
</li>
<li>
<p>jQuery</p>
<pre><code>相当于是编程语言的第三方模块。
例如:requests、openpyxl
</code></pre>
</li>
</ul>
<p>注意:知识点回顾。</p>
<h2 id="1-javascript">1. JavaScript</h2>
<p>JavaScript是一门编程语言。</p>
<p>JavaScript的意义是什么?</p>
<pre><code>让程序实现一些动态的效果。
</code></pre>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;Title&lt;/title&gt;
    &lt;style&gt;
      .menus{
            width: 200px;
            border: 1px solid red;
      }
      .menus .header{
            background-color: gold;
            padding: 20px 10px;
      }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;div class="menus"&gt;
      &lt;div class="header" onclick="myFunc()"&gt;大标题&lt;/div&gt;
      &lt;div class="item"&gt;内容&lt;/div&gt;
    &lt;/div&gt;

    &lt;script type="text/javascript"&gt;
      function myFunc() {
            //alert("你好呀");
            confirm("是否要继续?")
      }
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>前端三大组件:</p>
<ul>
<li>HTML,裸体。</li>
<li>CSS,好看的衣服。</li>
<li>JavaScript,动态。</li>
</ul>
<h3 id="11-代码位置">1.1 代码位置</h3>
<p><img src="https://img2023.cnblogs.com/blog/3186882/202307/3186882-20230701092251485-101490155.png"></p>
<p>JS代码的存在形式:</p>
<ul>
<li>
<p>当前HTML中。</p>
<pre><code>&lt;script type="text/javascript"&gt;
        // 编写JavaScript代码
&lt;/script&gt;
</code></pre>
</li>
<li>
<p>在其他js文件中,导入使用。</p>
</li>
</ul>
<p><img src="https://img2023.cnblogs.com/blog/3186882/202307/3186882-20230701092252183-1989873123.png"></p>
<h3 id="12-注释">1.2 注释</h3>
<ul>
<li>
<p>HTML的注释</p>
<pre><code class="language-html">&lt;!-- 注释内容 --&gt;
</code></pre>
</li>
<li>
<p>CSS的注释,<code>style代码块</code></p>
<pre><code class="language-css">/* 注释内容 */
</code></pre>
</li>
<li>
<p>JavaScript的注释,<code>script代码块</code></p>
<pre><code class="language-javascript">// 注释内容

/* 注释内容 */
</code></pre>
</li>
</ul>
<h3 id="13-变量">1.3 变量</h3>
<ul>
<li>
<p>Python,编程语言。</p>
<pre><code class="language-python">name = "高倩"
print(name)
</code></pre>
</li>
<li>
<p>JavaScript,编程语言。</p>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;Title&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;script type="text/javascript"&gt;
      var name = "高倩";
      
      console.log(name);
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
</li>
</ul>
<h3 id="14-字符串类型">1.4 字符串类型</h3>
<pre><code class="language-javascript">// 声明
var name = "高倩";
var name = String("高倩");
</code></pre>
<pre><code class="language-javascript">// 常见功能
var name = "中国联通";

var v1 = name.length;
var v2 = name;   // name.charAt(3)
var v3 = name.trim();
var v4 = name.substring(0,2); // 前取后不取
</code></pre>
<h4 id="案例跑马灯">案例:跑马灯</h4>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;Title&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;span id="txt"&gt;欢迎中国联通领导高倩莅临指导&lt;/span&gt;

&lt;script type="text/javascript"&gt;
    function show() {
      // 1.去HTML中找到某个标签并获取他的内容(DOM)
      var tag = document.getElementById("txt");
      var dataString = tag.innerText;

      // 2.动态起来,把文本中的第一个字符放在字符串的最后面。
      var firstChar = dataString;
      var otherString = dataString.substring(1, dataString.length);
      var newText = otherString + firstChar;

      // 3.在HTML标签中更新内容
      tag.innerText = newText;
    }

    // JavaScript中的定时器,如:每1s执行一次show函数。
    setInterval(show, 1000);
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<h3 id="15-数组">1.5 数组</h3>
<pre><code class="language-javascript">// 定义
var v1 = ;
var v2 = Array();
</code></pre>
<pre><code class="language-javascript">// 操作

var v1 = ;

v1
v1 = "高倩";

v1.push("联通");      // 尾部追加
v1.unshift("联通");   // 尾部追加 ["联通", 11,22,33,44]
v1.splice(索引位置,0,元素);
v1.splice(1,0,"中国");// 尾部追加

v1.pop()   //尾部删除
v1.shift()   //头部删除
v1.splice(索引位置,1)
v1.splice(2,1);// 索引为2的元素删除 ;
</code></pre>
<pre><code class="language-javascript">var v1 = ;
for(var idx in v1){
    // idx=0/1/2/3/    data=v1
}
</code></pre>
<pre><code class="language-javascript">var v1 = ;
for(var i=0; i&lt;v1.length; i++){
    // i=0/1/2/3   data=v1
}
</code></pre>
<p>注意:break和continue</p>
<h4 id="案例动态数据">案例:动态数据</h4>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;Title&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;ul id="city"&gt;
      &lt;!-- &lt;li&gt;北京&lt;/li&gt; --&gt;
    &lt;/ul&gt;

    &lt;script type="text/javascript"&gt;

      // 发送网络请求,获取数据
      var cityList = ["北京","上海","深圳"];
      for(var idx in cityList){
            var text = cityList;

            // 创建 &lt;li&gt;&lt;/li&gt;
            var tag = document.createElement("li");
            // 在li标签中写入内容
            tag.innerText = text;

            // 添加到id=city那个标签的里面。DOM
            var parentTag = document.getElementById("city");
            parentTag.appendChild(tag);
      }
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<h3 id="16-对象字典">1.6 对象(字典)</h3>
<pre><code class="language-javascript">info = {
    "name":"高倩",
    "age":18
}

info = {
    name:"高倩",
    age:18
}
</code></pre>
<pre><code class="language-javascript">info.age
info.name = "郭智"

info["age"]
info["name"] = "郭智"

delete info["age"]
</code></pre>
<pre><code class="language-javascript">info = {
    name:"高倩",
    age:18
}

for(var key in info){
    // key=name/age      data=info
}
</code></pre>
<h4 id="案例动态表格">案例:动态表格</h4>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;Title&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;table border="1"&gt;
    &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;ID&lt;/th&gt;
      &lt;th&gt;姓名&lt;/th&gt;
      &lt;th&gt;年龄&lt;/th&gt;
    &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody id="body"&gt;

    &lt;/tbody&gt;
&lt;/table&gt;

&lt;script type="text/javascript"&gt;
    var info = {id: 1, name: "郭智", age: 19};

    var tr = document.createElement("tr");
    for (var key in info) {
      var text = info;
      var td = document.createElement('td');
      td.innerText = text;
      tr.appendChild(td);
    }
    var bodyTag = document.getElementById("body");
    bodyTag.appendChild(tr);

&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;Title&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;table border="1"&gt;
    &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;ID&lt;/th&gt;
      &lt;th&gt;姓名&lt;/th&gt;
      &lt;th&gt;年龄&lt;/th&gt;
    &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody id="body"&gt;

    &lt;/tbody&gt;
&lt;/table&gt;

&lt;script type="text/javascript"&gt;

    // 网络请求获取,写入到页面上。
    var dataList = [
      {id: 1, name: "郭智1", age: 19},
      {id: 2, name: "郭智2", age: 19},
      {id: 3, name: "郭智3", age: 19},
      {id: 4, name: "郭智4", age: 19},
      {id: 5, name: "郭智5", age: 19},
    ];
    for (var idx in dataList) {
      var info = dataList;

      var tr = document.createElement("tr");
      for (var key in info) {
            var text = info;
            var td = document.createElement('td');
            td.innerText = text;
            tr.appendChild(td);
      }

      var bodyTag = document.getElementById("body");
      bodyTag.appendChild(tr);
    }

&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<h3 id="17-条件语句">1.7 条件语句</h3>
<pre><code class="language-javascript">if ( 条件 ){
   
}else{
   
}

if (1==1){
   
}else{
   
}
</code></pre>
<pre><code class="language-javascript">if ( 条件 ){
   
}else if ( 条件 ){
   
}else if ( 条件 ){
   
}else{
   
}
</code></pre>
<h3 id="18-函数">1.8 函数</h3>
<pre><code class="language-python">def func():
    函数的内容...
   
func()
</code></pre>
<pre><code class="language-javascript">function func(){
    ...
}
   
func()
</code></pre>
<h2 id="2dom">2.DOM</h2>
<p>DOM,就是一个模块,模块可以对HTML页面中的标签进行操作。</p>
<pre><code class="language-javascript">// 根据ID获取标签
var tag = document.getElementById("xx");

// 获取标签中的文本
tag.innerText

// 修改标签中的文本
tag.innerText = "哈哈哈哈哈";
</code></pre>
<pre><code class="language-javascript">// 创建标签 &lt;div&gt;哈哈哈哈哈&lt;/div&gt;
var tag = document.createElement("div");

// 标签写内容
tag.innerText = "哈哈哈哈哈";
</code></pre>
<pre><code class="language-html">&lt;ul id="city"&gt;
        &lt;li&gt;北京&lt;/li&gt;
&lt;/ul&gt;

&lt;script type="text/javascript"&gt;
        var tag = document.getElementById("city");
   
    // &lt;li&gt;北京&lt;/li&gt;
        var newTag = document.createElement("li");
    newTag.innerText = "北京";
   
    tag.appendChild(newTag);
&lt;/script&gt;
</code></pre>
<h3 id="21-事件的绑定">2.1 事件的绑定</h3>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;Title&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;input type="button" value="点击添加" onclick="addCityInfo()"&gt;
&lt;ul id="city"&gt;

&lt;/ul&gt;

&lt;script type="text/javascript"&gt;
    function addCityInfo() {

      var newTag = document.createElement("li");
      newTag.innerText = "联通";

      var parentTag = document.getElementById("city");
      parentTag.appendChild(newTag);
    }

&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;Title&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;input type="text" placeholder="请输入内容" id="txtUser"/&gt;
&lt;input type="button" value="点击添加" onclick="addCityInfo()"&gt;
&lt;ul id="city"&gt;

&lt;/ul&gt;

&lt;script type="text/javascript"&gt;
    function addCityInfo() {
      // 1.找到输入标签
      var txtTag = document.getElementById("txtUser");

      // 2.获取input框中用户输入的内容
      var newString = txtTag.value;

      // 判断用户输入是否为空,只有不为空才能继续。
      if (newString.length &gt; 0) {
            // 3.创建标签 &lt;li&gt;&lt;/li&gt; 中间的文本信息就是用户输入的内容
            var newTag = document.createElement("li");
            newTag.innerText = newString;

            // 4.标签添加到ul中
            var parentTag = document.getElementById("city");
            parentTag.appendChild(newTag);

            // 3.将input框内容清空
            txtTag.value = "";
      }else{
            alert("输入不能为空");
      }

    }

&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>注意:DOM中还有很多操作。</p>
<pre><code>DOM可以实现很多功能,但是比较繁琐。
页面上的效果:jQuery来实现 / vue.js / react.js
</code></pre>
<h2 id="3知识点的回顾">3.知识点的回顾</h2>
<ul>
<li>
<p>编码相关</p>
<pre><code>文件存储时,使用某种编码,打开时就需要使用相同的编码,否则就会乱码。
字符底层存储时本质上都是0101010101010101。
字符和二进制的对应关系(编码):
        - ascii编码,256中对应关系。
        - gb2312,gbk,中文和亚洲的一些国家【中文是2个字节】
        - unicode,ucs2/ucs4,包括现在发现的所有文明。
        - utf-8编码,【中文是用几个字节?3字节】
       
Python默认解释器编码(utf-8)
        python.exe代码文件
       
        如果你将代码文件保存成了gbk编码,将Python模式解释器编码修改成gbk
</code></pre>
<pre><code class="language-python">data = "中"
res = data.encode('utf-8')
print(res)# b'\xe4\xb8\xad'


data = "国"
res = data.encode('gbk')
print(res)# b'\xb9\xfa'
</code></pre>
</li>
<li>
<p>计算机中的单位</p>
<pre><code>位/字节/KB/M/G/T...

办流量/硬盘/内存
</code></pre>
</li>
<li>
<p>字符串格式化(三种)</p>
<pre><code class="language-python">v1 = "我是{},锦娘{}".format("武沛齐",77)   # 推荐

v2 = "我是%s,今年%d岁" %("武沛齐",77, )

name = "武沛齐"
age = 19
v3 = f"我是{name},今年{age}岁"
</code></pre>
</li>
<li>
<p>数据类型</p>
<pre><code>常见数据类型:int、bool、str、list、tuple、dict、set、float、None
        - 哪些转化弄成布尔值为False:空、None、0
        - 可变和不可变划分,可变的有哪些:list、set、dict
        - 可哈希和不可哈希,不可哈希的有哪些:list、set、dict
        - 字典的键/集合的元素,必须是可哈希的类型(list、set、dict不能做字典的键和集合元素)
       
主要数据类型:
        - str
                - 独有功能:upper/lower/startswith/split/strip/join
                  注意:str不可变,不会对原字符串进行修改,新的内容。
                - 公共功能:len/索引/切片/for循环/判断是否包含
        - list
                - 独有功能:append、insert、remove、pop...
                  注意:list可变,功能很多都是对原数据操作。
          - 公共功能:len/索引/切片/for循环/判断是否包含
        - dict
                - 独有功能:get/keys/items/values
                - 公共功能:len/索引for循环/判断是否包含(判断键效率很高)
</code></pre>
</li>
<li>
<p>运算符</p>
<pre><code>基本运算符:加减乘除、...


一般:
        1&gt;2 and 3&lt;10
特殊的逻辑运算(整体结果取决于谁?)
        v1 = 99 and 88    # 88
        v2 = [] or 10          # 10
        v3 = "联通" or []# "联通"
</code></pre>
</li>
<li>
<p>推导式(简化生成数据)</p>
<pre><code class="language-python">data = []
for i in range(10):
    data.append(i)
   
v1 = [ i for i in range(10) ]
v2 = [ i for i in range(10) if i&lt;5 ]   #
</code></pre>
</li>
<li>
<p>函数编程</p>
<pre><code>函数的基础知识
        - 定义
        - 参数,概念:位置传参/关键字传参/参数默认值/动态参数*args,**kwargs
        - 返回值
                - 函数中一旦遇到return就立即返回,后续代码不再执行。
                - 函数么有返回值默认返回None
函数的进阶:
        - Python中是为函数为作用域。
        - 全局变量和局部变量,规范:全局变量(大写)、局部变量(小写)。
        - 在局部变量中可以使用global关键字,global的作用?引用全局的那个变量(不是在局部新建)。
       
内置函数(python内部提供的函数):
        - bin/hex/odc/max/min/divmod/sorted/open文件操作
       
       
文件操作:
        - 基本操作:打开、操作、关闭,为了防止忘记关闭文件,可以怎么做?with
        - 打开文件时有模式:
                - r/rb,读      【文件不存在,报错】       【文件夹不存在,报错】
                - w/wb,写(清空) 【文件不存在,自动新建】    【文件夹不存在,报错】
                - a/ab,追加      【文件不存在,自动新建】    【文件夹不存在,报错】
          注意:os.makedirs/os.path.exsits、是否存在,不存在新建目录。
</code></pre>
</li>
<li>
<p>模块</p>
<pre><code>模块的分类:
        - 自定义模块:
                - os.path,导入模块时python内部都回去那个目录找。
                - 自己写py文件时,不要与python内置模块同名。
                - import/from xx import xx
        - 内置模块:time/datetime/json/re/random/os..
        - 第三方模块:requests、openpyxl、python-docx、flask、bs4
       
查看当前目录下所有的文件:os.listdir / os.walk
关于时间模块:时间戳 / datetime格式 / 字符串 ,三种时间格式可以互相转化。
关于JSON模块:
        - JSON本质是字符串,有一些自己格式的要求,例如:无元组/无单引号。
        - json.dumps序列化时,只能序列化Python常用数据类型:
            +-------------------+---------------+
            | Python            | JSON          |
            +===================+===============+
            | dict            | object      |
            +-------------------+---------------+
            | list, tuple       | array         |
            +-------------------+---------------+
            | str               | string      |
            +-------------------+---------------+
            | int, float      | number      |
            +-------------------+---------------+
            | True            | true          |
            +-------------------+---------------+
            | False             | false         |
            +-------------------+---------------+
            | None            | null          |
            +-------------------+---------------+
关于re正则模块:
        - 正则:\d\w
        - 贪婪匹配和非贪婪匹配(默认),想让他不贪婪个数后面 ? 。
        - re.search/re.match/re.findall

第三方模块,都有哪些方式可以让我们安装第三方模块。
        - pip管理工具
        - 源码
        - wheel包
</code></pre>
</li>
<li>
<p>面向对象</p>
<pre><code>目标:不是为了用面向对编程(推荐使用函数编程,面向对象要看的懂)。

面向对象三大特性:封装、继承、多态。
</code></pre>
</li>
<li>
<p>前端开发</p>
<pre><code>- 前端知识点分为三部分:
        - HTML,标签具有模式特点。
        - CSS,修改标签的特点。
        - JavaScript,动态。
       
- HTML标签
        - div/span/a/img/input/form/table/ul...
        - 块级和行内标签,例如:div span 默认谁是块级标签?div
          注意:css样式,发现行内标签设置高端、宽度、内边距、外边距都是无效。
        - form表单 + input/select/textarea 数据框
                - action,提交地址
                - method,提交方式
                - form标签中有一个submit
                - 内部标签都需要设置name属性
               
- CSS样式
        - 局部一定会用到的样式:div + float(脱离文档流,clear:both; clearfix)
        - 高度和宽度
        - 边距
                - 内边距,padding
                - 外边距,margin
        - 字体大小/颜色
        - 边框
        - 背景颜色
        - hover,鼠标放上去就会触发的CSS样式。
</code></pre>
</li>
</ul>
<h2 id="4-jquery">4. jQuery</h2>
<p>jQuery是一个JavaScript第三方模块(第三方类库)。</p>
<ul>
<li>基于jQuery,自己开发一个功能。</li>
<li>现成的工具 依赖jQuery,例如:BootStrap动态效果。</li>
</ul>
<h3 id="41-快速上手">4.1 快速上手</h3>
<ul>
<li>
<p>下载jQuery</p>
<pre><code>https://jquery.com/
</code></pre>
</li>
<li>
<p>应用jQuery</p>
</li>
<li>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;Title&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;h1 id="txt"&gt;中国联通&lt;/h1&gt;


&lt;script src="static/jquery-3.6.0.min.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;
    // 利用jQuery中的功能实现某些效果
   
    $("#txt").text("广西移动");

&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;
</code></pre>
</li>
</ul>
<h3 id="42-寻找标签直接寻找">4.2 寻找标签(直接寻找)</h3>
<ul>
<li>
<p>ID选择器</p>
<pre><code class="language-html">&lt;h1 id="txt"&gt;中国联通&lt;/h1&gt;
&lt;h1&gt;中国联通&lt;/h1&gt;
&lt;h1&gt;中国联通&lt;/h1&gt;
</code></pre>
<pre><code class="language-javascript">$("#txt")
</code></pre>
</li>
<li>
<p>样式选择器</p>
<pre><code class="language-html">&lt;h1 class="c1"&gt;中国联通1&lt;/h1&gt;
&lt;h1 class="c1"&gt;中国联通2&lt;/h1&gt;
&lt;h1 class="c2"&gt;中国联通3&lt;/h1&gt;
</code></pre>
<pre><code class="language-javascript">$(".c1")
</code></pre>
</li>
<li>
<p>标签选择器</p>
<pre><code class="language-html">&lt;h1 class="c1"&gt;中国联通1&lt;/h1&gt;
&lt;div class="c1"&gt;中国联通2&lt;/h1&gt;
&lt;h1 class="c2"&gt;中国联通3&lt;/h1&gt;
</code></pre>
<pre><code class="language-javascript">$("h1")
</code></pre>
</li>
<li>
<p>层级选择器</p>
<pre><code class="language-html">&lt;h1 class="c1"&gt;中国联通1&lt;/h1&gt;
&lt;h1 class="c1"&gt;
        &lt;div class="c2"&gt;
      &lt;span&gt;&lt;/span&gt;
      &lt;a&gt;&lt;/a&gt;
    &lt;/div&gt;
&lt;/h1&gt;
&lt;h1 class="c2"&gt;中国联通3&lt;/h1&gt;
</code></pre>
<pre><code class="language-javascript">$(".c1 .c2 a")
</code></pre>
</li>
<li>
<p>多选择器</p>
<pre><code class="language-html">&lt;h1 class="c1"&gt;中国联通1&lt;/h1&gt;
&lt;h1 class="c1"&gt;
        &lt;div class="c3"&gt;
      &lt;span&gt;&lt;/span&gt;
      &lt;a&gt;&lt;/a&gt;
    &lt;/div&gt;
&lt;/h1&gt;
&lt;h1 class="c2"&gt;中国联通3&lt;/h1&gt;
&lt;ul&gt;
    &lt;li&gt;xx&lt;/li&gt;
    &lt;li&gt;xx&lt;/li&gt;
&lt;/ul&gt;
</code></pre>
<pre><code class="language-javascript">$("#c3,#c2,li")
</code></pre>
</li>
<li>
<p>属性选择器</p>
<pre><code class="language-html">&lt;input type='text' name="n1" /&gt;
&lt;input type='text' name="n1" /&gt;
&lt;input type='text' name="n2" /&gt;
</code></pre>
<pre><code class="language-java">$("input")
</code></pre>
</li>
</ul>
<h3 id="43-间接寻找">4.3 间接寻找</h3>
<ul>
<li>
<p>找到兄弟</p>
<pre><code class="language-html">&lt;div&gt;
    &lt;div&gt;北京&lt;/div&gt;
    &lt;div id='c1'&gt;上海&lt;/div&gt;
    &lt;div&gt;深圳&lt;/div&gt;
    &lt;div&gt;广州&lt;/div&gt;
&lt;/div&gt;
</code></pre>
<pre><code class="language-javascript">$("#c1").prev()      // 上一个
$("#c1")
$("#c1").next()      // 下一个
$("#c1").next().next() // 下一个、下一个

$("#c1").siblings()    // 所有的系统
</code></pre>
</li>
<li>
<p>找父子</p>
<pre><code class="language-html">&lt;div&gt;
    &lt;div&gt;
      &lt;div&gt;北京&lt;/div&gt;
      &lt;div id='c1'&gt;
              &lt;div&gt;青浦区&lt;/div&gt;
              &lt;div class="p10"&gt;宝山区&lt;/div&gt;
              &lt;div&gt;浦东新区&lt;/div&gt;
      &lt;/div&gt;
      &lt;div&gt;深圳&lt;/div&gt;
      &lt;div&gt;广州&lt;/div&gt;
    &lt;/div&gt;
    &lt;div&gt;
      &lt;div&gt;陕西&lt;/div&gt;
      &lt;div&gt;山西&lt;/div&gt;
      &lt;div&gt;河北&lt;/div&gt;
      &lt;div&gt;河南&lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
</code></pre>
<pre><code class="language-javascript">$("#c1").parent()            // 父亲
$("#c1").parent().parent()   // 父亲、父亲

$("#c1").children()                // 所有的儿子
$("#c1").children(".p10")          // 所有的儿子中寻找class=p10

$("#c1").find(".p10")            // 去所有子孙中寻找class=p10
$("#c1").find("div")            // 去所有子孙中寻找class=p10
</code></pre>
</li>
</ul>
<h3 id="案例菜单的切换">案例:菜单的切换</h3>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;Title&lt;/title&gt;
    &lt;style&gt;
      .menus{
            width: 200px;
            height: 800px;
            border: 1px solid red;
      }
      .menus .header{
            background-color: gold;
            padding: 10px 5px;
            border-bottom: 1px dotted #dddddd;
      }
      .menus .content a{
            display: block;
            padding: 5px 5px;
            border-bottom: 1px dotted #dddddd;
      }

      .hide{
            display: none;
      }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;div class="menus"&gt;
      &lt;div class="item"&gt;
            &lt;div class="header" onclick="clickMe(this);"&gt;上海&lt;/div&gt;
            &lt;div class="content hide"&gt;
                &lt;a&gt;宝山区&lt;/a&gt;
                &lt;a&gt;青浦区&lt;/a&gt;
                &lt;a&gt;浦东新区&lt;/a&gt;
                &lt;a&gt;普陀区&lt;/a&gt;
            &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="item"&gt;
            &lt;div class="header" onclick="clickMe(this);"&gt;北京&lt;/div&gt;
            &lt;div class="content hide"&gt;
                &lt;a&gt;海淀区&lt;/a&gt;
                &lt;a&gt;朝阳区&lt;/a&gt;
                &lt;a&gt;大兴区&lt;/a&gt;
                &lt;a&gt;昌平区&lt;/a&gt;
            &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;script src="static/jquery-3.6.0.min.js"&gt;&lt;/script&gt;
    &lt;script&gt;
      function clickMe(self) {
            // $(self)-&gt; 表示当前点击的那个标签。
            // $(self).next() 下一个标签
            // $(self).next().removeClass("hide");   删除样式
            $(self).next().removeClass("hide");
      }
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;Title&lt;/title&gt;
    &lt;style&gt;
      .menus{
            width: 200px;
            height: 800px;
            border: 1px solid red;
      }
      .menus .header{
            background-color: gold;
            padding: 10px 5px;
            border-bottom: 1px dotted #dddddd;

            cursor: pointer;
      }
      .menus .content a{
            display: block;
            padding: 5px 5px;
            border-bottom: 1px dotted #dddddd;
      }

      .hide{
            display: none;
      }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;div class="menus"&gt;
      &lt;div class="item"&gt;
            &lt;div class="header" onclick="clickMe(this);"&gt;上海&lt;/div&gt;
            &lt;div class="content hide"&gt;
                &lt;a&gt;宝山区&lt;/a&gt;
                &lt;a&gt;青浦区&lt;/a&gt;
                &lt;a&gt;浦东新区&lt;/a&gt;
                &lt;a&gt;普陀区&lt;/a&gt;
            &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="item"&gt;
            &lt;div class="header" onclick="clickMe(this);"&gt;北京&lt;/div&gt;
            &lt;div class="content hide"&gt;
                &lt;a&gt;海淀区&lt;/a&gt;
                &lt;a&gt;朝阳区&lt;/a&gt;
                &lt;a&gt;大兴区&lt;/a&gt;
                &lt;a&gt;昌平区&lt;/a&gt;
            &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;script src="static/jquery-3.6.0.min.js"&gt;&lt;/script&gt;
    &lt;script&gt;
      function clickMe(self) {
            var hasHide = $(self).next().hasClass("hide");
            if(hasHide){
                $(self).next().removeClass("hide");
            }else{
                $(self).next().addClass("hide");
            }
      }
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;Title&lt;/title&gt;
    &lt;style&gt;
      .menus {
            width: 200px;
            height: 800px;
            border: 1px solid red;
      }

      .menus .header {
            background-color: gold;
            padding: 10px 5px;
            border-bottom: 1px dotted #dddddd;

            cursor: pointer;
      }

      .menus .content a {
            display: block;
            padding: 5px 5px;
            border-bottom: 1px dotted #dddddd;
      }

      .hide {
            display: none;
      }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div class="menus"&gt;
    &lt;div class="item"&gt;
      &lt;div class="header" onclick="clickMe(this);"&gt;上海&lt;/div&gt;
      &lt;div class="content"&gt;
            &lt;a&gt;宝山区&lt;/a&gt;
            &lt;a&gt;青浦区&lt;/a&gt;
            &lt;a&gt;浦东新区&lt;/a&gt;
            &lt;a&gt;普陀区&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class="item"&gt;
      &lt;div class="header" onclick="clickMe(this);"&gt;北京&lt;/div&gt;
      &lt;div class="content hide"&gt;
            &lt;a&gt;海淀区&lt;/a&gt;
            &lt;a&gt;朝阳区&lt;/a&gt;
            &lt;a&gt;大兴区&lt;/a&gt;
            &lt;a&gt;昌平区&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class="item"&gt;
      &lt;div class="header" onclick="clickMe(this);"&gt;上海2&lt;/div&gt;
      &lt;div class="content hide"&gt;
            &lt;a&gt;宝山区&lt;/a&gt;
            &lt;a&gt;青浦区&lt;/a&gt;
            &lt;a&gt;浦东新区&lt;/a&gt;
            &lt;a&gt;普陀区&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class="item"&gt;
      &lt;div class="header" onclick="clickMe(this);"&gt;北京2&lt;/div&gt;
      &lt;div class="content hide"&gt;
            &lt;a&gt;海淀区&lt;/a&gt;
            &lt;a&gt;朝阳区&lt;/a&gt;
            &lt;a&gt;大兴区&lt;/a&gt;
            &lt;a&gt;昌平区&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;script src="static/jquery-3.6.0.min.js"&gt;&lt;/script&gt;
&lt;script&gt;
    function clickMe(self) {
      // 让自己下面的功能展示出来
      $(self).next().removeClass("hide");

      // 找父亲,父亲的所有兄弟,再去每个兄弟的子孙中寻找 class=content,添加hide样式
      $(self).parent().siblings().find(".content").addClass("hide");
    }
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<h3 id="44-操作样式">4.4 操作样式</h3>
<ul>
<li>addClass</li>
<li>removeClass</li>
<li>hasClass</li>
</ul>
<h3 id="45-值的操作">4.5 值的操作</h3>
<pre><code class="language-html">&lt;div id='c1'&gt;内容&lt;/div&gt;
</code></pre>
<pre><code class="language-javascript">$("#c1").text()      // 获取文本内容
$("#c1").text("休息")   // 设置文本内容
</code></pre>
<pre><code class="language-html">&lt;input type='text' id='c2' /&gt;
</code></pre>
<pre><code class="language-javascript">$("#c2").val()            // 获取用户输入的值
$("#c2").val("哈哈哈")   // 设置值
</code></pre>
<h3 id="案例动态创建数据">案例:动态创建数据</h3>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;Title&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;input type="text" id="txtUser" placeholder="用户名"&gt;
&lt;input type="text" id="txtEmail" placeholder="邮箱"&gt;
&lt;input type="button" value="提交" onclick="getInfo()"/&gt;

&lt;ul id="view"&gt;
&lt;/ul&gt;

&lt;script src="static/jquery-3.6.0.min.js"&gt;&lt;/script&gt;
&lt;script&gt;
    function getInfo() {
      // 1.获取用户输入的用户名和密码
      var username = $("#txtUser").val();
      var email = $("#txtEmail").val();
      var dataString = username + " - " + email;

      // 2.创建li标签,在li的内部写入内容。 $("&lt;li&gt;")
      var newLi = $("&lt;li&gt;").text(dataString);

      // 3.把新创建的li标签添加到ul里面。
      $("#view").append(newLi);
    }

&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<h3 id="46-事件">4.6 事件</h3>
<pre><code class="language-html">&lt;input type="button" value="提交" onclick="getInfo()"/&gt;

&lt;script&gt;
    function getInfo() {
      
    }
&lt;/script&gt;
</code></pre>
<pre><code class="language-html">&lt;ul&gt;
    &lt;li&gt;百度&lt;/li&gt;
    &lt;li&gt;谷歌&lt;/li&gt;
    &lt;li&gt;搜狗&lt;/li&gt;
&lt;/ul&gt;

&lt;script&gt;
    $("li").click(function(){
      // 点击li标签时,自动执行这个函数;
      // $(this)当前你点击的是那个标签。
    });
&lt;/script&gt;
</code></pre>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;Title&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;ul&gt;
    &lt;li&gt;百度&lt;/li&gt;
    &lt;li&gt;谷歌&lt;/li&gt;
    &lt;li&gt;搜狗&lt;/li&gt;
&lt;/ul&gt;

&lt;script src="static/jquery-3.6.0.min.js"&gt;&lt;/script&gt;
&lt;script&gt;
    $("li").click(function () {
      var text = $(this).text();
      console.log(text);
    });

&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>在jQuery中可以删除某个标签。</p>
<pre><code class="language-html">&lt;div id='c1'&gt;内容&lt;/div&gt;

$("#c1").remove();
</code></pre>
<p>案例:删除元素</p>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;Title&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;ul&gt;
    &lt;li&gt;百度&lt;/li&gt;
    &lt;li&gt;谷歌&lt;/li&gt;
    &lt;li&gt;搜狗&lt;/li&gt;
&lt;/ul&gt;

&lt;script src="static/jquery-3.6.0.min.js"&gt;&lt;/script&gt;
&lt;script&gt;
    $("li").click(function () {
      $(this).remove();
    });

&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>当页面框架加载完成之后执行代码:</p>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;Title&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;ul&gt;
    &lt;li&gt;百度&lt;/li&gt;
    &lt;li&gt;谷歌&lt;/li&gt;
    &lt;li&gt;搜狗&lt;/li&gt;
&lt;/ul&gt;

&lt;script src="static/jquery-3.6.0.min.js"&gt;&lt;/script&gt;
&lt;script&gt;
    $(function () {
      
      // 当页面的框架加载完成之后,自动就执行。
      $("li").click(function () {
            $(this).remove();
      });

    });
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<h3 id="案例表格操作">案例:表格操作</h3>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;Title&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;table border="1"&gt;
    &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;ID&lt;/th&gt;
      &lt;th&gt;姓名&lt;/th&gt;
      &lt;th&gt;操作&lt;/th&gt;
    &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;1&lt;/td&gt;
      &lt;td&gt;武沛齐&lt;/td&gt;
      &lt;td&gt;
            &lt;input type="button" value="删除" class="delete"/&gt;
      &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;1&lt;/td&gt;
      &lt;td&gt;武沛齐&lt;/td&gt;
      &lt;td&gt;
            &lt;input type="button" value="删除" class="delete"/&gt;
      &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;1&lt;/td&gt;
      &lt;td&gt;武沛齐&lt;/td&gt;
      &lt;td&gt;
            &lt;input type="button" value="删除" class="delete"/&gt;
      &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;1&lt;/td&gt;
      &lt;td&gt;武沛齐&lt;/td&gt;
      &lt;td&gt;
            &lt;input type="button" value="删除" class="delete"/&gt;
      &lt;/td&gt;
    &lt;/tr&gt;

    &lt;/tbody&gt;
&lt;/table&gt;

&lt;script src="static/jquery-3.6.0.min.js"&gt;&lt;/script&gt;
&lt;script&gt;
    $(function () {
      //找到所有class=delete的标签,绑定事件
      $(".delete").click(function () {
            // 删除当前行的数据
            $(this).parent().parent().remove();
      });
    })
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<h2 id="5-前端整合">5. 前端整合</h2>
<ul>
<li>HTML</li>
<li>CSS</li>
<li>JavaScript、jQuery</li>
<li>BootStrap(动态效果依赖jQuery)。</li>
</ul>
<h3 id="案例添加数据页面">案例:添加数据页面</h3>
<blockquote>
<p>人员信息录入功能,需要提供用户信息:</p>
<p>用户名、年龄、薪资、部门、入职时间(*)</p>
<p>对于时间的选择:不能输入;选择;(插件) datetimepicker</p>
<ul>
<li>下载插件</li>
<li>应用插件</li>
</ul>
</blockquote>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;Title&lt;/title&gt;
    &lt;link rel="stylesheet" href="static/plugins/bootstrap-3.4.1/css/bootstrap.css"&gt;
    &lt;link rel="stylesheet" href="static/plugins/font-awesome-4.7.0/css/font-awesome.css"&gt;
    &lt;link rel="stylesheet" href="static/plugins/bootstrap-datepicker/css/bootstrap-datepicker.css"&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div class="container"&gt;
    &lt;form class="form-horizontal" style="margin-top: 20px"&gt;
      &lt;div class="row clearfix"&gt;
            &lt;div class="col-xs-6"&gt;
                &lt;div class="form-group"&gt;
                  &lt;label class="col-sm-2 control-label"&gt;姓名&lt;/label&gt;
                  &lt;div class="col-sm-10"&gt;
                        &lt;input type="text" class="form-control" placeholder="姓名"&gt;
                  &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;

            &lt;div class="col-xs-6"&gt;
                &lt;div class="form-group"&gt;
                  &lt;label class="col-sm-2 control-label"&gt;年龄&lt;/label&gt;
                  &lt;div class="col-sm-10"&gt;
                        &lt;input type="text" class="form-control" placeholder="年龄"&gt;
                  &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;

      &lt;/div&gt;

      &lt;div class="row clearfix"&gt;
            &lt;div class="col-xs-6"&gt;
                &lt;div class="form-group"&gt;
                  &lt;label class="col-sm-2 control-label"&gt;薪资&lt;/label&gt;
                  &lt;div class="col-sm-10"&gt;
                        &lt;input type="text" class="form-control" placeholder="薪资"&gt;
                  &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="col-xs-6"&gt;
                &lt;div class="form-group"&gt;
                  &lt;label class="col-sm-2 control-label"&gt;部门&lt;/label&gt;
                  &lt;div class="col-sm-10"&gt;
                        &lt;select class="form-control"&gt;
                            &lt;option&gt;IT部门&lt;/option&gt;
                            &lt;option&gt;销售部门&lt;/option&gt;
                            &lt;option&gt;运营部&lt;/option&gt;
                        &lt;/select&gt;
                  &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="row clearfix"&gt;
            &lt;div class="col-xs-6"&gt;
                &lt;div class="form-group"&gt;
                  &lt;label class="col-sm-2 control-label"&gt;入职日期&lt;/label&gt;
                  &lt;div class="col-sm-10"&gt;
                        &lt;input type="text" id="dt" class="form-control" placeholder="入职日期"&gt;
                  &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="row clearfix"&gt;
            &lt;div class="col-xs-6"&gt;
                &lt;div class="form-group"&gt;
                  &lt;div class="col-sm-offset-2 col-sm-10"&gt;
                        &lt;button type="submit" class="btn btn-primary"&gt;提 交&lt;/button&gt;
                  &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
      &lt;/div&gt;

    &lt;/form&gt;

&lt;/div&gt;


&lt;script src="static/js/jquery-3.6.0.min.js"&gt;&lt;/script&gt;
&lt;script src="static/plugins/bootstrap-3.4.1/js/bootstrap.js"&gt;&lt;/script&gt;
&lt;script src="static/plugins/bootstrap-datepicker/js/bootstrap-datepicker.js"&gt;&lt;/script&gt;
&lt;script src="static/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js"&gt;&lt;/script&gt;

&lt;script&gt;
    $(function () {

      $('#dt').datepicker({
            format: 'yyyy-mm-dd',
            startDate: '0',
            language: "zh-CN",
            autoclose: true
      });

    })
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>源码:见【gx_day13_demo】</p>
<h2 id="总结">总结</h2>
<ol>
<li>了解HTML标签、标签结构,基于他可以实现简单的页面。</li>
<li>CSS,了解基本样式;在别人模板的基础改就可以。</li>
<li>JavaScript、jQuery,了解基本使用
<ul>
<li>事件绑定/寻找标签/操作标签。</li>
<li>导入现成插件。</li>
</ul>
</li>
</ol>
<p>后续开发过程中,对于前端就是在BootStrap的基础整改。</p>
<h2 id="提前做">提前做</h2>
<p>各小组做讨论做什么项目?</p>
<ul>
<li>项目名称</li>
<li>功能</li>
</ul>
<p>注意:周三晚上确定。</p><br><br>
来源:https://www.cnblogs.com/wykang/p/17518840.html
頁: [1]
查看完整版本: day13 前端开发