<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      JavaScript進(jìn)階指南: DOM與BOM操作,從初學(xué)者到專家,一步也能登天一篇文章就足夠了

      DOM與BOM操作

      復(fù)習(xí)鏈接:  http://c.biancheng.net/view/9360.html
      事件對(duì)象: https://www.runoob.com/jsref/dom-obj-event.html
      

      初識(shí)DOM

      DOM --> Document Object Model --> 文檔對(duì)象模型 --> 通過js來操作網(wǎng)頁內(nèi)容
      
      前幾節(jié)課學(xué)習(xí)的是JavaScript的基本語法.學(xué)習(xí)過程中可能會(huì)產(chǎn)生割裂感(和html/css沒有聯(lián)系). 從這節(jié)課開始就是和之前的知識(shí)點(diǎn)串聯(lián)在一起.
      通過dom讓js和html/css產(chǎn)生聯(lián)系
      
      DOM樹 --> 一個(gè)網(wǎng)頁文檔里的所有內(nèi)容(圖片,文本,樣式)在網(wǎng)頁底層中是用樹形結(jié)構(gòu)保存的.樹里面每個(gè)分支的終點(diǎn)叫做node(節(jié)點(diǎn)). 每個(gè)節(jié)點(diǎn)都屬于一個(gè)對(duì)象(屬性/方法)
      
      網(wǎng)頁的內(nèi)容是以樹形結(jié)構(gòu)的方式保存在程序里.每個(gè)元素都是一個(gè)對(duì)象.都有自己對(duì)應(yīng)的屬性和方法
      Document對(duì)象是DOM樹的根部.是所有節(jié)點(diǎn)的根節(jié)點(diǎn).可以通過Document訪問網(wǎng)頁里的所有內(nèi)容
      
      操作網(wǎng)頁元素分為兩步:
      	1.找出元素
      	2.對(duì)元素實(shí)施操作
      

      DOM元素的選中方式

      Element -- 元素
      函數(shù)語法基本都是小駝峰(第一個(gè)單詞不大寫,第二個(gè)單詞開始首字母大寫)
      
      1.通過id獲取元素
      	document.getElementById() // 通過id名獲取元素
      2.通過class獲取元素
      	document.getElementsByClassName() // 通過類名獲取元素
      3.通過標(biāo)簽名獲取元素
      	document.getElementsByTagName() // 通過標(biāo)簽名獲取元素
      
      獲取的元素默認(rèn)值為HTMLCollection.類似于數(shù)組,但它不是數(shù)組
      	同: 數(shù)據(jù)都有下標(biāo)的概念 / 數(shù)據(jù)可以被遍歷
      	異: 它不可以使用數(shù)組的方法
      基于這個(gè)原因,如果直接對(duì)偽數(shù)組進(jìn)行dom操作是無效的. 我們要操作的不是這個(gè)偽數(shù)組,而是偽數(shù)組里的元素. 所以要添加下標(biāo),來訪問對(duì)應(yīng)的元素
      

      DOM操作文本內(nèi)容

      innerText:  讀取/修改元素里的文本內(nèi)容(不識(shí)別標(biāo)簽語法)
      innetHTML:  讀取/修改元素里的文本內(nèi)容(識(shí)別標(biāo)簽語法)
      

      DOM操作元素屬性/樣式

      操作元素屬性 --> 獲取到元素后, 通過元素名.  的方式進(jìn)行操作
      
      	元素名.屬性名   // 使用元素屬性
      	元素名.屬性名 = XXX /// 修改元素屬性
      
      	元素名.title  // 設(shè)置/獲取元素的標(biāo)題
      	元素名.src    // 設(shè)置/獲取元素的資源路徑
      	元素名.className  //  設(shè)置/獲取元素的類名
      
      操作元素樣式(css) --> 獲取元素后,通過元素名.style.樣式名  的方式進(jìn)行操作
      	元素名.style.樣式名   // 訪問該元素的css樣式
      
      	元素名.style.width   // 訪問元素的寬度樣式
      
      如果css的樣式有(-)減號(hào)作為連接符.在用js寫的時(shí)候,不寫連接符而是用小駝峰命名法
      font-size  -->  fontSize
      background-color  --> backgroundColor
      

      交互事件(event)

      事件指的是用戶跟網(wǎng)頁內(nèi)容產(chǎn)生交互時(shí)的操作:
      	按下鍵盤/單擊鼠標(biāo)/雙擊鼠標(biāo)/輸入文本
      當(dāng)這些事件觸發(fā)時(shí),就可以通過JavaScript的監(jiān)聽器.來獲取到交互情況,并運(yùn)行對(duì)應(yīng)的功能
      
      事件流程:
      	1.獲取事件對(duì)象 --> 會(huì)基于什么進(jìn)行交互
      	2.綁定監(jiān)聽事件 -->
      		事件對(duì)象.監(jiān)聽事件 = function(){}  當(dāng)觸發(fā)事件時(shí),執(zhí)行函數(shù)里的功能
      		box.onclick = function(){功能代碼} --> 當(dāng)點(diǎn)擊box時(shí),觸發(fā)功能
      
      在獲取到元素之后.可以用this表示當(dāng)前對(duì)象。
      

      DOM復(fù)習(xí)

      DOM -- Document	Object Model --> 文檔對(duì)象模型
      	一個(gè)網(wǎng)頁可以稱為文檔.通過js代碼實(shí)現(xiàn)找到/操作網(wǎng)頁文檔內(nèi)容
      document -- 文檔
      element -- 元素
      node -- 節(jié)點(diǎn)
      event -- 事件
      Browser -- 瀏覽器
      
      DOM操作流程:
      	1.獲取目標(biāo)元素
      	2.進(jìn)行對(duì)應(yīng)操作
      
      document.getElementById() // 通過id獲取元素
      document.getElementsByClassName()  // 通過類名獲取元素
      document.getElementsByTagName()  // 通過標(biāo)簽名獲取元素
      
      獲取到元素對(duì)象后.就可以使用/修改里面的屬性/方法
      
      獲取到的元素對(duì)象表示形式類似于數(shù)組: 1.有下標(biāo) 2.能遍歷數(shù)據(jù) 3.不能使用數(shù)組的方法
      用類名/標(biāo)簽名獲取到的數(shù)據(jù).哪怕只有一個(gè)對(duì)象.也是存在偽數(shù)組里的
      

      DOM補(bǔ)充

      可以通過dom對(duì)元素進(jìn)行增刪改查操作 --> 增刪改查是基于Node節(jié)點(diǎn)來實(shí)現(xiàn)的
      
      parent: 父級(jí)
      child: 子級(jí)
      

      初識(shí)BOM:

      Browser Object Model --> 瀏覽器對(duì)象模型
      	dom簡(jiǎn)單來說就是通過js和網(wǎng)頁內(nèi)容進(jìn)行交互
      	bom簡(jiǎn)單來說就是通過js和瀏覽器進(jìn)行交互(彈窗,刷新,加載)
      
      其實(shí)我們之前用的alert,prompt.都屬于bom操作 --> 控制瀏覽器彈出一個(gè)窗口再進(jìn)行操作  --> 他們都屬于同一個(gè)對(duì)象.叫做window(當(dāng)前頁面窗口)
      
      window.alert()
      window.prompt()
      但是一般不這么寫.因?yàn)榫W(wǎng)頁默認(rèn)運(yùn)行
      

      定時(shí)器:

      作用就是可以讓網(wǎng)頁里的一段程序.過一陣子再運(yùn)行
      
      setInterval() > 周期性定時(shí)器 > 隔一陣子就運(yùn)行一次
      setTimeOut() > 一次性定時(shí)器 > 執(zhí)行一次就結(jié)束
      

      代碼塊:

      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Document</title>
      </head>
      <body>
          <p>
              什么是dom操作?和html進(jìn)行交互<br>
              1、獲取html標(biāo)簽,返回一個(gè)元素對(duì)象<br>
              2、設(shè)置 值/改變 值<br>
      
          </p>
          <input id="inp1" type="text" value="aa">
          <ul id="ul1">
              <li>1-a-12</li>
              <li>2-b-13</li>
              <li>3-c-14</li>
          </ul>
          <button onclick="changeTest()">替換按鈕</button>
          <ul>
              <li>onclick屬性表示一個(gè)點(diǎn)擊事件屬性</li>
              <li>onclick屬性值是一個(gè)函數(shù)名稱()</li>
              <li>表示,一旦點(diǎn)擊該按鈕,就調(diào)用這個(gè)函數(shù)</li>
          </ul>
      </body>
      <script>
          //一、單個(gè)的設(shè)置
          //1、獲取
          let inp1=document.getElementById('inp1')
          //2、設(shè)置 值
          inp1.value='曹操'
          //二、批量的設(shè)置
          let arr2=[
              {id:1,name:'曹操',age:36},
              {id:2,name:'劉備',age:34},
              {id:3,name:'孫權(quán)',age:30},
          ]
          //1、獲取 ul
          let ul1=document.getElementById('ul1')
          function changeTest(){
          //2、替換
         let s=''
              arr2.forEach((e)=>{
              s+=`<li>${e.id}-${e.name}-${e.age}</li>`
          })
          ul1.innerHTML=s
      }
      </script>
      </html>
      

      強(qiáng)盛集團(tuán)案例:

      <!DOCTYPE html>
      <html lang="en">
      <head>
          <title>Document</title>
          <style>
              button{
                  width: 100px;
                  height: 40px;
                  /* 左外間距 */
                  margin-left: 40px;
                  /* 去掉邊框 */
                  border: none;
                  /* 去掉輪廓 */
                  outline: none;
                  /* 圓角 */
                  border-radius: 8px;
                  color: white;
      
                  font-size: large;
                  cursor: pointer;
              }
              .fb>button:nth-child(1){
                  background-color: rebeccapurple;
              }
              .fb>button:nth-child(2){
                  background-color:red;
              }
              .fb>button:nth-child(3){
                  background-color: green;
              }
              .fb>button:nth-child(4){
                  background-color: blue;
              }
              /* tbody中的每個(gè)tr隔行變色 */
              tbody>tr:nth-child(odd){
                  background-color: skyblue;
              }
              tbody>tr:nth-child(even){
                  background-color: rgb(227, 181, 62);
              }
          </style>
      </head>
      <body>
          <h1 style="text-align: center;">強(qiáng)盛集團(tuán)員工薪資表</h1>
          <h3 style="text-align: center;">強(qiáng)盛集團(tuán)經(jīng)營(yíng)理念:風(fēng)浪越大,魚越貴</h3>
          <div class="fb" style="text-align: center;">
          <button onclick="generateTab()">生成表格</button>
          <button onclick="doubleSalary()">薪資翻倍</button>
          <button onclick="restEmp()">退休人員</button>
          <button onclick="sumSalary()">薪資總數(shù)</button>
      </div>
      <table style="margin-top: 30px;" align="center" border="1" cellpadding="18" cellspacing="0">
          <thead>
              <tr>
                  <th><a href="javascript:orderEmp('id')">序號(hào)</a></th>
                  <th>姓名</th>
                  <th><a href="javascript:orderEmp('age')">年齡</a></th>
                  <th><a href="javascript:orderEmp('salary')">薪資</a></th>
              </tr>
          </thead>
          <tbody id="tbody">
              <tr>
                <td>1</td>
                <td>高啟強(qiáng)</td>
                <td>36</td>
                <td>200</td>
          </tr>
          </tbody>
          <tfoot id="tfoot">
              <tr style="text-align: center;">
                  <td colspan="4">薪資總數(shù):</td>
              </tr>
          </tfoot>
      </table>
      </body>
      <script>
           let emps=[
              {id:1,name:'高啟強(qiáng)',age:36,salary:200},
              {id:2,name:'高啟盛',age:30,salary:300},
              {id:3,name:'唐小龍',age:35,salary:100},
              {id:4,name:'唐小虎',age:35,salary:100},
              {id:5,name:'陳泰',age:66,salary:100},
          ]
          //獲取
          let tbody=document.getElementById('tbody')
          let tfoot=document.getElementById('tfoot')
          
          function generateTab(){
              //調(diào)用函數(shù)
              createTab(emps)
          }
          //重復(fù)出現(xiàn)的代碼,封裝成一個(gè)函數(shù)
          function createTab(arr){
              let s=''
              arr.forEach((e)=>{
                  s+=`<tr>
                      <td>${e.id}</td>
                      <td>${e.name}</td>
                      <td>${e.age}</td>
                      <td>${e.salary}</td>
                  </tr>`
              })
              tbody.innerHTML=s
          }
          let newEmps;
          function doubleSalary(){
              //薪資翻倍后,返回一個(gè)新的數(shù)組
              newEmps=emps.map((e)=>{
                  e.salary*=2
                  return e
              })
             //調(diào)用函數(shù)
             createTab(newEmps)
          }
          //退休功能
          function restEmp(){
              let newEmps=emps.filter((e)=>{
                  return e.age>65
              })
              //調(diào)用函數(shù)
              createTab(newEmps)
          }
          //薪資求和
          function sumSalary(){
              let salarySum
              if(newEmps){
                  salarySum=newEmps.reduce((sum,e)=>{
                      return sum+=e.salary
                  },0)
              }else{
                  salarySum=emps.reduce((sum,e)=>{
                      return sum+=e.salary
                  },0)
              }
              console.log(salarySum)
                  tfoot.innerHTML=
                  `<tr style="text-align: center;">
                      <td colspan="4">薪資總數(shù):${salarySum}</td>
                  </tr>`
          }
           //排序
           let a=true
          function orderEmp(type){
              a=!a //每調(diào)用一次,a取反
              let newEmps2
              switch(type){
                  case 'id':
                      console.log('根據(jù)id排序')
                      newEmps2=emps.sort((e1,e2)=>{
                          return a? e2.id-e1.id : e1.id-e2.id
                      })
                      break;
                  case 'age':
                  console.log('根據(jù)age排序')
                  newEmps2=emps.sort((e1,e2)=>{
                          return a? e2.age-e1.age : e1.age-e2.age
                      })
                      break;
                  case 'salary':
                  console.log('根據(jù)salary排序')
                  newEmps2=emps.sort((e1,e2)=>{
                          return a? e2.salary-e1.salary : e1.salary-e2.salary
                      })
                      break;
              }
              //調(diào)用生成tbody的函數(shù)
              createTab(newEmps2)
          }
      
      </script>
      </html>
      

      效果圖展示:


      posted @ 2023-07-09 10:26  二價(jià)亞鐵  閱讀(130)  評(píng)論(6)    收藏  舉報(bào)
      主站蜘蛛池模板: 成人h动漫精品一区二区无码| 九九热在线视频精品免费| 亚洲av午夜福利精品一区二区| 成人免费无遮挡在线播放| 不卡乱辈伦在线看中文字幕| 亚洲av与日韩av在线| 欧美野外伦姧在线观看| 97无码人妻福利免费公开在线视频| 免费观看的av在线播放| 国产精品一区在线蜜臀| 亚洲国产日韩欧美一区二区三区 | 亚洲综合精品第一页| 亚洲爆乳WWW无码专区| 亚洲精品www久久久久久| 亚洲国产一区二区在线| 国产系列高清精品第一页| 大地资源网第二页免费观看| 国产精品国产自产拍在线| 男女爽爽无遮挡午夜视频| 国产成人精品无码专区| 狠狠色丁香婷婷综合尤物| 亚洲精品乱码久久久久久| 精品人妻蜜臀一区二区三区| 在线A毛片免费视频观看| 久久99国产精品尤物| 青青草无码免费一二三区| 欧美久久精品一级c片免费| 99在线精品国自产拍中文字幕| 自拍偷拍第一区二区三区| 国产综合视频一区二区三区| 成人免费无码大片a毛片| 国产目拍亚洲精品区一区| 色噜噜一区二区三区| 乱老年女人伦免费视频| 成人午夜福利视频后入| 成人一区二区人妻不卡视频| 中文字幕国产精品资源| 一二三四免费中文字幕| 欧美人成精品网站播放| 国产农村妇女毛片精品久久| 亚洲国产成人精品女久久|