js獲取值操作 1.獲取用戶數據標簽內部的數據 >HTML代碼 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <input type="text" ...
目錄
js獲取值操作
1.獲取用戶數據標簽內部的數據
--->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
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']
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
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'
事件
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:提前寫好函數 標簽內部指定
<!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:先查找標簽 然後批量綁定
<!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
let btnEle = document.getElementById('d1')
btnEle.onclick = function func2(){
alert('註意:吃糖容易長蛀牙,還是別吃了!')
console.log(this)
}
this指代的是當前被操作的標簽對象,以後我們在一些複雜的代碼的時候,需要在代碼中反覆的用到這個標簽,就可以用this倆快速的指代,類似於面向對象中的self就是當前對象是誰那麼這個self就是誰
window.onload
當我們給頁面上的元素綁定事件的時候,必須等到文檔載入完畢。因為我們無法給一個不存在的元素綁定事件。
window.onload事件在文件載入過程結束的時候觸發。此時,文檔中的所有對象都位於DOM中,並且所有圖像,腳本,鏈接和子框架都已完成載入。
註意:.onload()函數存在覆蓋現象。
JS事件案例校驗用戶輸入展示
<!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>