js獲取值操作、js類屬性操作、事件

来源:https://www.cnblogs.com/zxr1002/archive/2022/08/26/16629042.html
-Advertisement-
Play Games

js獲取值操作 1.獲取用戶數據標簽內部的數據 >HTML代碼 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <input type="text" ...


目錄

js獲取值操作

1.獲取用戶數據標簽內部的數據

image

--->HTML代碼
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="text" id="d1" name="">
<input type="text" name="gender" value="male" id="d2">男
<input type="text" name="gender" value="female" id="d3">女

<select name="" id="d4">
  <option value="111">1</option>
  <option value="222">2</option>
  <option value="333">3</option>
</select>

<input type="file" name="file" id="d5">
</body>
</html>

--->js代碼
# 獲取到輸入框
let i1Ele = document.getElementById('d1')
# 查看它的值,可以動態的獲取到前端輸入的信息
i1Ele.value
''
i1Ele.value
'jason'
# 獲取選擇框
let o4Ele = document.getElementById('d4')
# 獲取到的是Value裡面的值,前端看到的1,是我們設置的前端所展示內容
o4Ele.value
'111'

註意:關於獲取用戶上傳的文件數據

let i5Ele = document.getElementById('d5')
# 獲取到的只是我們自己電腦上的位置,沒什麼用處
i5Ele.value
'C:\\fakepath\\02 數據存取演變史.mp4'
# 獲取文件的信息
fileEle.files  # 數組  [文件對象,文件對象1...]
# 這裡它顯示了裡面有一個對象
FileList {0: File, length: 1}
0: File
lastModified: 1660266516578
lastModifiedDate: Fri Aug 12 2022 09:08:36 GMT+0800 (中國標準時間) {}
name: "02 數據存取演變史.mp4"
size: 53558043
type: "video/mp4"
webkitRelativePath: ""
[[Prototype]]: File
length: 1
[[Prototype]]: FileList

獲取文件數據(需要通過索引取值)

i5Ele.files[0]
File {name: '02 數據存取演變史.mp4', lastModified: 1660266516578, lastModifiedDate: Fri Aug 12 2022 09:08:36 GMT+0800 (中國標準時間), webkitRelativePath: '', size: 53558043, …}
lastModified: 1660266516578
lastModifiedDate: Fri Aug 12 2022 09:08:36 GMT+0800 (中國標準時間) {}
name: "02 數據存取演變史.mp4"
size: 53558043
type: "video/mp4"
webkitRelativePath: ""
[[Prototype]]: File

image

js獲取值總結

普通數據(輸入、選擇)
	標簽對象.value
文件數據(上傳)
	標簽對象.files
	標簽對象.files[0]

js類操作

1.獲取標簽所有的類屬性(classList)

1.生成變數名對象
let divEle = document.getElementsByClassName('c1')

2.獲取標簽所有的類屬性
divEle.classList
DOMTokenList(3) ['c1', 'c2', 'c3', value: 'c1 c2 c3']

image

2.增加某個屬性(add)

divEle.classList.add('c4')
divEle
<div class="c1 c2 c3 c4"></div>

3.移除某個屬性(remove)

divEle.classList.remove('c4')
divEle
<div class="c1 c2 c3"></div>

4.驗證是否包含某個類屬性(contains)

divEle.classList.contains('c3')
true
'返回的是true或者false'

5.有則刪除無則添加(toggle)

divEle.classList.toggle('c3')
true
divEle.classList.toggle('c3')
false

image
image
image

js樣式操作

只要想操作標簽css先用style起手(DOM操作操作標簽樣式)

1.js操作css屬性的規律

對於沒有中橫線的css屬性一般直接使用style屬性名即可

obj.style.margin
obj.style.width
obj.style.left
obj.style.position

2.對含有中橫線的CSS屬性,將中橫線後面的第一個字母換成大寫即可

obj.style.marginTop
obj.style.borderLeftWidth
obj.style.zIndex
obj.style.fontFamily

2.指定css操作

let pEle = document.getElementsByTagName('p')[0]
pEle.style.backgroundColor = 'red'
'red'

image

事件

HTML 4.0 的新特性之一是有能力使 HTML 事件觸發瀏覽器中的動作(action),比如當用戶點擊某個 HTML 元素時啟動一段 JavaScript。下麵是一個屬性列表,這些屬性可插入 HTML 標簽來定義事件動作。

1.事件可以簡單的理解為是給html標簽綁定了一些額外的功能(能夠觸發js代碼的運行)

常用事件

onclick        當用戶點擊某個對象時調用的事件句柄。
ondblclick     當用戶雙擊某個對象時調用的事件句柄。

onfocus        元素獲得焦點。               // 練習:輸入框
onblur         元素失去焦點。               應用場景:用於表單驗證,用戶離開某個輸入框時,代表已經輸入完了,我們可以對它進行驗證.
onchange       域的內容被改變。             應用場景:通常用於表單元素,當元素內容被改變時觸發.(select聯動)

onkeydown      某個鍵盤按鍵被按下。          應用場景: 當用戶在最後一個輸入框按下回車按鍵時,表單提交.
onkeypress     某個鍵盤按鍵被按下並鬆開。
onkeyup        某個鍵盤按鍵被鬆開。
onload         一張頁面或一幅圖像完成載入。
onmousedown    滑鼠按鈕被按下。
onmousemove    滑鼠被移動。
onmouseout     滑鼠從某元素移開。
onmouseover    滑鼠移到某元素之上。

onselect       在文本框中的文本被選中時發生。
onsubmit       確認按鈕被點擊,使用的對象是form。

2.綁定事件的兩種方式

綁定事件的方式1:提前寫好函數 標簽內部指定

image

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="button" value="點我有驚喜" onclick="func1()">
<button>按一下給你蹦倆糖出來</button>
<script>
  function func1(){
    alert('喜提一個大胖小子!')
  }
</script>
</body>
</html>

綁定事件的方式2:先查找標簽 然後批量綁定

image

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="button" value="點我有驚喜" onclick="func1()">
<button id="d1">按一下給你蹦倆糖出來</button>
<script>
  // function func1(){
  //   alert('喜提一個大胖小子!')
  // }
  let btnEle = document.getElementById('d1')
  btnEle.onclick = function func1(){
    alert('註意:吃糖容易長蛀牙,還是別吃了!')
  }
</script>
</body>
</html>

3.事件中的this

image

let btnEle = document.getElementById('d1')
  btnEle.onclick = function func2(){
    alert('註意:吃糖容易長蛀牙,還是別吃了!')
    console.log(this)
  }

this指代的是當前被操作的標簽對象,以後我們在一些複雜的代碼的時候,需要在代碼中反覆的用到這個標簽,就可以用this倆快速的指代,類似於面向對象中的self就是當前對象是誰那麼這個self就是誰

window.onload

當我們給頁面上的元素綁定事件的時候,必須等到文檔載入完畢。因為我們無法給一個不存在的元素綁定事件。

window.onload事件在文件載入過程結束的時候觸發。此時,文檔中的所有對象都位於DOM中,並且所有圖像,腳本,鏈接和子框架都已完成載入。

註意:.onload()函數存在覆蓋現象。

image

JS事件案例校驗用戶輸入展示

image

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>
  <input type="text" id="username">
  <span class="errors" style="color: red"></span>
</p>
<p>
  <input type="text" id="password">
  <span class="errors" style="color: red"></span>
</p>
  <button id="btn">提交</button>
<script>
  // 1.查找按鈕標簽
  let btnEle = document.getElementById('btn')
  // 2.綁定單擊事件
  btnEle.onclick = function () {
    // 3.獲取用戶輸入的用戶名和密碼
    let username = document.getElementById('username').value;
    let password = document.getElementById('password').value;
    // 4.判斷用戶名和密碼是否合法
    if (username === 'jason'){
      // 4.1查找獲取用戶名的input框下麵的span標簽
      let span1Ele = document.getElementsByClassName('errors')[0]
      // 4.2給span標簽添加內部文本
      span1Ele.innerText = '用戶名不能是Jason'
    }
    if (password.length === 0){
      // 4.1查找獲取用戶名的input框下麵的span標簽
      let span2Ele = document.getElementsByClassName('errors')[1]
      // 4.2給span標簽添加內部文本
      span2Ele.innerText = '密碼不能為空'
    }
  }
</script>
</body>
</html>

JS事件案例省市聯動

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
省份:<select name="" id="province"></select>
市區:<select name="" id="city"></select>
<script>
    let data = {
        "河北": ["廊坊", "邯鄲"],
        "北京": ["朝陽區", "海澱區"],
        "山東": ["威海市", "煙臺市"],
        "安徽": ["蕪湖", "合肥"],
        "上海": ["浦東新區", "青浦區"],
        "山西": ["忻州", "運城"]
    };
    let proEle = document.getElementById('province');
    let cityEle = document.getElementById('city');

    // 1.迴圈獲取所有的省消息
    for (let pro in data) {
        // 2.創建option標簽
        let opEle = document.createElement('option')
        // 3.添加內部文本
        opEle.innerText = pro // <option>省份信息</option>
        // 4.添加value屬性,<option value=‘省份信息’>省份信息</option>
        opEle.setAttribute('value', pro)
        // 5.將上述的option標簽添加到第一個select標簽中
        proEle.append(opEle)

        // 給省份的下拉框綁定文本域變化事件
        proEle.onchange = function () {
            // 每次給市區下拉框添加市區信息之前 應該先清空上一次載入的數據
            cityEle.innerHTML = '';
            // 1.獲取用戶選擇的省份信息
            let currentPro = this.value;
            // 2.根據省份獲取對應的市區列表數據
            let targetCityList = data[currentPro];
            // 3.迴圈獲取所有的市信息
            for (let i = 0; i < targetCityList.length; i++) {
                // 4.創建option標簽
                let opEle = document.createElement('option');  // <option></option>
                // 5.添加內部文本
                opEle.innerText = targetCityList[i]
                // 6.添加value屬性
                opEle.setAttribute('value', targetCityList[i])
                // 7.添加到第二個select標簽內
                cityEle.append(opEle)
            }
        }
    }
</script>
</body>
</html>

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 騰訊雲資料庫一直致力於推動資料庫基礎研究創新、資料庫產學研合作生態建設,助力國產資料庫學術人才培養和技術創新生態建設發展。 為讓更多資料庫從業者瞭解資料庫領域的最新研究成果,熟悉更多行業前沿發展趨勢,更好地探索前沿技術創新,8月16日下午,騰訊雲資料庫邀請到華南師範大學二級教授 湯庸、長江學者 毛睿 ...
  • 在7月28日的袋鼠雲2022產品發佈會上,基於對現在與未來的暢想,袋鼠雲產研負責人思樞正式發佈了全新的四大產品體系。 其中的數棧DTinsight,相信大家都很熟悉了,不同於數駒這位新朋友,數棧作為袋鼠雲和大家經常見面的“老朋友”,在保持初心的同時,這次也有了一些不一樣的變化。 作為袋鼠雲打造的一站 ...
  • 本文介紹 Kubernetes 支持資料庫等有狀態應用的常見解決方案:StatefulSet。 在構建機器學習向量管理層時,我們面臨的一個重要問題:如何持久化數據以避免數據丟失? 在閱讀了許多資料庫企業發佈的博客後,我們認為 StatefulSet[1] 是實現這個目標的可行方法。 我們研究了不同的 ...
  • 1. 主從原理 1.1 主從介紹 所謂 mysql 主從就是建立兩個完全一樣的資料庫,其中一個為主要使用的資料庫,另一個為次要的資料庫,一般在企業中,存放比較重要的數據的資料庫伺服器需要配置主從,這樣可以防止因資料庫伺服器宕機導致數據丟失,還能保證業務量太多、數據太多和訪問人數太多時服務的質量(服務 ...
  • HMS Core Discovery第17期直播《音隨我動,秒變音色造型師》,已於8月25日圓滿結束,本期直播我們邀請了HMS Core音頻編輯服務的產品經理、技術專家以及創新娛樂類應用“唱鴨”的創始人做客直播間,分享影音娛樂行業發展的洞見及音頻技術新玩法。一起來回顧本期精彩內容吧! 【精彩回顧】 ...
  • 分析服務 ◆ 留存分析支持¬將流失用戶存為受眾,開發者通過對流失人群的分層以及多維分析,在制定相關用戶召回策略時將更有針對性; ◆ 原“受眾分析”更名為“人群洞察”,下設“用戶分群”和“用戶畫像”模塊。通過用戶分群可實現不同維度的受眾細分,通過用戶畫像則可以進一步分析對應細分群組的人群畫像與屬性等特 ...
  • 本文是深入淺出 ahooks 源碼系列文章的第十三篇,該系列已整理成文檔-地址。覺得還不錯,給個 star 支持一下哈,Thanks。 本篇文章探討一下 ahooks 對 DOM 類 Hooks 使用規範,以及源碼中是如何去做處理的。 DOM 類 Hooks 使用規範 這一章節,大部分參考官方文檔的 ...
  • jQuery(write less do more) jQuary是一個輕量級的、相容多瀏覽器的JavaScript庫 jQuery使用戶能夠更方便地處理HTML Document、Events、實現動畫效果、方便地進行Ajax交互,能夠極大地簡化JavaScript編程。它的宗旨就是:“Write ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...