JavaScript操作元素實(shí)例大全
操作元素內(nèi)容參考之前文章:JavaScript WebAPI、DOM、事件、操作元素
案例:顯示隱藏密碼案例
核心思路: (操作表單元素屬性)
- 點(diǎn)擊眼睛按鈕,把密碼框類型改為文本框就可以看見里面的密碼 一個(gè)按鈕兩個(gè)狀態(tài),
- 點(diǎn)擊一次,切換為文本框,繼續(xù)點(diǎn)擊一次切換為密碼框
- 算法:利用一個(gè)flag變量,來判斷flag的值,如果是1 就切換為文本框,flag 設(shè)置為0,如果是0 就切換為密碼框,flag設(shè)置為1

<style>
.box{
position: relative;
width: 400px;
border-bottom: 1px solid #ccc;
margin: 100px auto;
}
.box input{
width: 370px;
height: 30px;
border: 0;
outline: none;
}
.box img{
position:absolute;
top: 2px;
right: 2px;
width: 24px;
}
</style>
<body>
<div class="box">
<label for="">
<img src="./image/close.png" alt="" id="eye">
</label>
<input type="password" name="" id="pwd">
</div>
<script>
var eye=document.getElementById('eye')
var pwd=document.getElementById('pwd')
var flag=0
eye.onclick=function(){
//點(diǎn)擊后 更換文本框類型、圖片及標(biāo)記值
if(flag==0){
pwd.type='text'
eye.src='./image/open.png'
flag=1
}else{
pwd.type='password'
flag=0
}
}
</script>
</body>
案例:循環(huán)精靈圖
核心思路: (操作元素樣式)
- 利用for循環(huán) 修改精靈圖片的 背景位置
- background-position 讓循環(huán)里面的 i 索引號(hào) * 44就是每個(gè)圖片的y坐標(biāo)

<style>
*{
margin: 0;
padding: 0;
}
li{
list-style-type: none;
}
.box{
width: 250px;
margin: 100px auto;
}
.box li{
margin: 15px;
float: left;
width: 24px;
height: 24px;
background: url(./image/sprite.png) no-repeat;
}
</style>
<body>
<div class="box">
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
<script>
// 1. 獲取元素 所有的小li
var lis = document.querySelectorAll('li');
for (var i = 0; i < lis.length; i++) {
// 讓索引號(hào) 乘以 44 就是每個(gè)li 的背景y坐標(biāo)
var y = i * 44;
lis[i].style.backgroundPosition = '0 -' + y + 'px';
}
</script>
</body>

案例:密碼框驗(yàn)證信息
核心思路:(用className修改樣式屬性)
- 首先判斷的事件是表單失去焦點(diǎn) onblur
- 如果輸入正確則提示正確的信息顏色為綠色小圖標(biāo)變化
- 如果輸入不是6到16位,則提示錯(cuò)誤信息顏色為紅色 小圖標(biāo)變化
- 因?yàn)槔锩孀兓瘶邮捷^多,采取className修改樣式
<style>
div {
width: 600px;
margin: 100px auto;
}
.message {
display: inline-block;
font-size: 12px;
color: #999;
background: url(./image/mess.png) no-repeat left center;
padding-left: 20px;
}
.wrong {
color: red;
background-image: url(./image/wrong.png);
}
.right {
color: green;
background-image: url(./image/right.png);
}
</style>
<body>
<div class="register">
<input type="password" class="ipt">
<p class="message">請(qǐng)輸入6~16位密碼</p>
</div>
<script>
var ipt = document.querySelector('.ipt')
var messgae = document.querySelector('.message')
ipt.onblur = function () {
if (this.value.length < 6 || this.value.length > 16) {
messgae.className = 'message wrong'
messgae.innerHTML = '您輸入位數(shù)不對(duì) 要求6~16位'
} else {
messgae.className = 'message right'
messgae.innerHTML = '您輸入的正確'
}
}
</script>
</body>



案例:背景換色
核心思想:(操作元素樣式屬性)
給4個(gè)小圖片利用循環(huán)注冊(cè)點(diǎn)擊事件當(dāng)點(diǎn)擊了這個(gè)圖片,讓頁(yè)面背景改為當(dāng)前的圖片核心算法: 把當(dāng)前圖片的src 路徑取過來,給body 做為背景即可

<style>
*{
margin: 0;
padding: 0;
}
body{
background: url(./image/1.jpg) no-repeat center top;
}
li{
list-style-type: none;
}
.tu{
overflow: hidden;
margin: 100px auto;
background-color: #fff;
width: 410px;
padding-top: 3px;
}
.tu li{
float: left;
margin: 0 1px;
cursor: pointer;
}
.tu img{
width: 100px;
}
</style>
<body>
<ul class="tu">
<li><img src="./image/1.jpg"></li>
<li><img src="./image/2.jpg"></li>
<li><img src="./image/3.jpg"></li>
<li><img src="./image/4.jpg"></li>
</ul>
<script>
//獲取元素
var imgs=document.querySelector('.tu').querySelectorAll('img');
//注冊(cè)事件
for(var i=0;i<imgs.length;i++){
imgs[i].onclick=function(){
// this.src路徑給body
document.body.style.backgroundImage='url('+this.src+')';
}
}
</script>
</body>
案例:表格換色
核心思路:(排他思想)
用到新的鼠標(biāo)事件 鼠標(biāo)經(jīng)過 onmouseover 鼠標(biāo)離開 onmouseout核心思路:鼠標(biāo)經(jīng)過 tr 行,當(dāng)前的行變背景顏色,鼠標(biāo)離開去掉當(dāng)前的背景顏色注意: 第一行(thead里面的行)不需要變換顏色,因此獲取的是 tbody 里面的行

<style>
table{
width:800px;
margin: 100px auto;
text-align: center;
border-collapse: collapse;
font-size: 14px;
}
thead tr{
height: 30px;
background-color: skyblue;
}
tbody tr{
height: 30px;
}
tbody td{
border-bottom: 1px solid #d7d7d7;
font-size: 12px;
color: blue;
}
.bg{
background-color: pink;
}
</style>
<body>
<table>
<thead>
<tr>
<th>代碼</th>
<th>名稱</th>
<th>最新公布凈值</th>
<th>累計(jì)凈值</th>
<th>前單位凈值</th>
<th>凈值增長(zhǎng)率</th>
</tr>
</thead>
<tbody>
<tr>
<td>003526</td>
<td>農(nóng)銀金穗3個(gè)月定期開放債券</td>
<td>1.075</td>
<td>1.079</td>
<td>1.074</td>
<td>+0.047%</td>
</tr>
<tr>
<td>003526</td>
<td>農(nóng)銀金穗3個(gè)月定期開放債券</td>
<td>1.075</td>
<td>1.079</td>
<td>1.074</td>
<td>+0.047%</td>
</tr>
<tr>
<td>003526</td>
<td>農(nóng)銀金穗3個(gè)月定期開放債券</td>
<td>1.075</td>
<td>1.079</td>
<td>1.074</td>
<td>+0.047%</td>
</tr>
<tr>
<td>003526</td>
<td>農(nóng)銀金穗3個(gè)月定期開放債券</td>
<td>1.075</td>
<td>1.079</td>
<td>1.074</td>
<td>+0.047%</td>
</tr>
<tr>
<td>003526</td>
<td>農(nóng)銀金穗3個(gè)月定期開放債券</td>
<td>1.075</td>
<td>1.079</td>
<td>1.074</td>
<td>+0.047%</td>
</tr>
<tr>
<td>003526</td>
<td>農(nóng)銀金穗3個(gè)月定期開放債券</td>
<td>1.075</td>
<td>1.079</td>
<td>1.074</td>
<td>+0.047%</td>
</tr>
</tbody>
</table>
<script>
//獲取元素
var trs=document.querySelector('tbody').querySelectorAll('tr')
//注冊(cè)事件
for(var i=0;i<trs.length;i++){
trs[i].onmouseover=function(){
this.className='bg'
}
trs[i].onmouseout=function(){
this.className=''
}
}
</script>
</body>
案例:表單全選和反選
核心思想:
- 全選和取消全選做法: 讓所有復(fù)選框的checked屬性(選中狀態(tài)) 跟隨 全選按鈕
- 復(fù)選框需要全部選中, 全選才能選中做法:給下面所有復(fù)選框綁定點(diǎn)擊事件,每次點(diǎn)擊,都要循環(huán)查看下面所有的復(fù)選框是否有沒選中的,如果有一個(gè)沒選中的, 上面全選就不選中
- 可以設(shè)置一個(gè)變量,來控制全選是否選中

<style>
*{
padding: 0;
margin: 0;
}
.wrap{
width: 300px;
margin: 100px auto 0;
}
table{
border-collapse: collapse;
border-spacing: 0;
border: 1px solid #c0c0c0;
width: 300px;
}
th,td{
border: 1px solid #d0d0d0;
color: #404060;
padding: 10px;
}
th{
background-color: #09c;
font: bold 16px '微軟雅黑';
color: #fff;
}
td{
font: 14px '微軟雅黑';
}
tbody tr{
background-color: #f0f0f0;
}
tbody tr:hover{
cursor: pointer;
background-color: #fafafa;
}
</style>
<body>
<div class="wrap">
<table>
<thead>
<tr>
<th>
<input type="checkbox" id="cbAll" />
</th>
<th>商品</th>
<th>價(jià)錢</th>
</tr>
</thead>
<tbody id="tb">
<tr>
<td>
<input type="checkbox" />
</td>
<td>iPhone8</td>
<td>8000</td>
</tr>
<tr>
<td>
<input type="checkbox" />
</td>
<td>iPad Pro</td>
<td>5000</td>
</tr>
<tr>
<td>
<input type="checkbox" />
</td>
<td>iPad Air</td>
<td>2000</td>
</tr>
<tr>
<td>
<input type="checkbox" />
</td>
<td>Apple Watch</td>
<td>2000</td>
</tr>
</tbody>
</table>
</div>
<script>
//獲取元素
var cbAll = document.getElementById('cbAll'); //全選按鈕
var tbs = document.getElementById('tb').getElementsByTagName('input'); //所有復(fù)選框按鈕
//注冊(cè)事件
//全選
cbAll.onclick = function () {
for (var i = 0; i < tbs.length; i++) {
tbs[i].checked = this.checked;
}
}
//反選
for (var i = 0; i < tbs.length; i++) {
tbs[i].onclick = function () {
var flag = true //控制全選按鈕
// 每次點(diǎn)擊復(fù)選框都要檢查是否全選
for (var i = 0; i < tbs.length; i++) {
if (tbs[i].checked == false) {
flag = false
break
}
}
cbAll.checked = flag
}
}
</script>
</body>
案例:tab欄切換
核心思想:(排他思想)
- Tab欄切換有2個(gè)大的模塊
- 上的模塊選項(xiàng)卡,點(diǎn)擊某一個(gè),當(dāng)前這一個(gè)底色會(huì)是紅色,其余不變(排他思想) 修改類名的方式
- 下面的模塊內(nèi)容,會(huì)跟隨上面的選項(xiàng)卡變化。所以下面模塊變化寫到點(diǎn)擊事件里面。 規(guī)律:下面的模塊顯示內(nèi)容和上面的選項(xiàng)卡一一對(duì)應(yīng),相匹配
- 核心思路: 給上面的tab_list 里面的所有小li 添加自定義屬性,屬性值從0開始編號(hào)。
- 當(dāng)點(diǎn)擊tab_list 里面的某個(gè)小li,讓tab_con 里面對(duì)應(yīng)序號(hào)的內(nèi)容顯示,其余隱藏(排他思想)
<style>
*{
margin: 0;
padding: 0;
}
li{
list-style-type: none;
}
.tab{
width:978px;
margin: 100px auto;
}
.tab_list{
height: 39px;
border: 1px solid #ccc;
background-color: #f1f1f1;
}
.tab_list li{
float: left;
height: 39px;
line-height: 39px;
padding: 0 20px;
text-align: center;
cursor: pointer;
}
.tab_list .current{
background-color: #c81623;
color: #fff;
}
.item{
display: none;
}
.item_info{
padding: 20px 0 0 20px;
}
</style>
<body>
<div class="tab">
<div class="tab_list">
<ul>
<li class="current">商品介紹</li>
<li>規(guī)格與包裝</li>
<li>售后保障</li>
<li>商品評(píng)價(jià)(50000)</li>
<li>手機(jī)社區(qū)</li>
</ul>
</div>
<div class="tab_con">
<div class="item" style="display: block;">
商品介紹模塊內(nèi)容
</div>
<div class="item">
規(guī)格與包裝模塊內(nèi)容
</div>
<div class="item">
售后保障模塊內(nèi)容
</div>
<div class="item">
商品評(píng)價(jià)(50000)模塊內(nèi)容
</div>
<div class="item">
手機(jī)社區(qū)模塊內(nèi)容
</div>
</div>
</div>
<script>
//獲取元素
var lis = document.querySelector('.tab_list').querySelectorAll('li');
var items = document.querySelectorAll('.item');
//注冊(cè)事件
for (var i = 0; i < lis.length; i++) {
//給li元素設(shè)置索引號(hào)
lis[i].setAttribute('index', i);
lis[i].onclick = function () {
//選項(xiàng)卡內(nèi)容
//清除所有l(wèi)i的current類
for (var i = 0; i < lis.length; i++) {
lis[i].className = '';
}
//給自身添加current類
this.className = 'current';
//顯示內(nèi)容
var index = this.getAttribute('index');
//清除其余item的內(nèi)容
for (var i = 0; i < items.length; i++) {
items[i].style.display = 'none';
}
//讓自身item的內(nèi)容顯示
items[index].style.display = 'block';
}
}
</script>
</body>

總結(jié)
到此這篇關(guān)于JavaScript操作元素的文章就介紹到這了,更多相關(guān)js操作元素內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
javascript 原型與原型鏈的理解及實(shí)例分析
這篇文章主要介紹了javascript 原型與原型鏈的理解,結(jié)合實(shí)例形式分析了javascript 原型與原型鏈的原理、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-11-11
Vue elementUI實(shí)現(xiàn)免密登陸與號(hào)碼綁定功能
這篇文章主要介紹了Vue elementUI實(shí)現(xiàn)免密登陸與號(hào)碼綁定功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-11-11
js調(diào)用后臺(tái)servlet方法實(shí)例
今天做歷史記錄查詢功能,遇到了前后臺(tái)方法互相調(diào)用的問題,研究了一下,把成功經(jīng)驗(yàn)記錄一二。2013-06-06
微信小程序利用canvas 繪制幸運(yùn)大轉(zhuǎn)盤功能
本文通過一段簡(jiǎn)單的實(shí)例代碼給大家介紹微信小程序利用canvas 繪制幸運(yùn)大轉(zhuǎn)盤,代碼很簡(jiǎn)單,感興趣的朋友跟隨腳本之家小編一起看看吧2018-07-07
Javasript設(shè)計(jì)模式之鏈?zhǔn)秸{(diào)用詳解
這篇文章主要為大家詳細(xì)介紹了Javasript設(shè)計(jì)模式之鏈?zhǔn)秸{(diào)用的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
javascript 實(shí)現(xiàn)簡(jiǎn)單的table排序及table操作練習(xí)
在這個(gè)列子中,練習(xí)了table的操作,主要有:tBodies、rows、cells,還有有關(guān)數(shù)組的排序方法:sort,按興趣的朋友可以研究下2012-12-12

