JavaScript中的this指向和自定義屬性詳解
1.this關(guān)鍵字
this指向的是當(dāng)前元素
全局函數(shù)中的this指向window對(duì)象
代碼中聲明了一個(gè)全局函數(shù),是屬于瀏覽器窗口對(duì)象的,所以this表示的就是瀏覽器窗口對(duì)象window
function fn() {
consolo.log(this);
}
fn()
標(biāo)簽事件屬性中的this指向window對(duì)象
如果將一個(gè)全局函數(shù)在一個(gè)標(biāo)簽屬性中調(diào)用,如下:
<button onclick="fn()">點(diǎn)我試試</button>
function fn() {
console.log(this)
}
事件屬性函數(shù)中的this指向當(dāng)前操作的標(biāo)簽
如果在標(biāo)簽對(duì)象的屬性上聲明了一個(gè)函數(shù),此時(shí)這個(gè)函數(shù)屬于標(biāo)簽屬性,所以函數(shù)內(nèi)部的this指向當(dāng)前標(biāo)簽對(duì)象
<button id="btn">點(diǎn)我試試</button>
var btn = document.getElementById('btn');
btn.onclick = function() {
console.log(this);
}
2.自定義屬性
在前端網(wǎng)頁(yè)的開發(fā)中,JavaScript語(yǔ)法操作的主要是標(biāo)簽對(duì)象,在一些特定的場(chǎng)合,需要通過設(shè)置自定義屬性來(lái)對(duì)標(biāo)簽進(jìn)行操作
基本語(yǔ)法:element.屬性名 =屬性值
var btn = document.getElementById('btn');
btn.index = 1;
3.綜合案例1:tab選項(xiàng)卡的實(shí)現(xiàn)
實(shí)現(xiàn)步驟
1.先完成靜態(tài)頁(yè)面的設(shè)計(jì)(html與css代碼見附錄)
2.先獲取頁(yè)面元素
var uli = document.querySelector('ul').querySelectorAll('li');
var oli = document.querySelector('ol').querySelectorAll('li');
3.通過for循環(huán)為元素添加點(diǎn)擊事件
for (var i = 0; i < uli.length; i++) {
uli[i].addEventListener('click', function () {
} )
}
4.給元素添加自定義屬性,給對(duì)應(yīng)的選項(xiàng)卡添加索引號(hào)
uli[i].index = i;
給點(diǎn)擊事件添加對(duì)應(yīng)的樣式(完整代碼)
for (var i = 0; i < uli.length; i++) {
uli[i].index = i;
uli[i].addEventListener('click', function () {
for (var j = 0; j < uli.length; j++) {
uli[j].className = '';
oli[j].className = '';
}
this.className = 'current';
oli[this.index].className = 'current';
})
}
注意:本案例是通過添加類名來(lái)實(shí)現(xiàn)對(duì)應(yīng)選項(xiàng)卡的顯示和隱藏,在給元素添加對(duì)應(yīng)的類名之前需要將所有元素的類名清除
附錄
<style>
* {
margin: 0;
padding: 0;
list-style: none;
}
.box {
height: 250px;
width: 300px;
border: 2px solid;
}
ul {
display: flex;
justify-content: space-between;
background: red;
border-bottom: 2px #ccc;
}
ul li {
float: left;
width: 100px;
color: #fff;
cursor: pointer;
height: 40px;
line-height: 40px;
text-align: center;
}
ul li.current {
border-bottom: 5px green solid;
}
ol li {
margin: 30px;
display: none;
}
ol li.current {
display: block;
}
</style>
<div class="box">
<ul>
<li class="current">第一頁(yè)</li>
<li>第二頁(yè)</li>
<li>第三頁(yè)</li>
</ul>
<ol>
<li class="current">我是第一頁(yè)</li>
<li>我是第二頁(yè)</li>
<li>我是第三頁(yè)</li>
</ol>
</div>
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
深入了解Hybrid App技術(shù)的相關(guān)知識(shí)
這篇文章主要介紹了深入了解Hybrid App技術(shù)的相關(guān)知識(shí),Hybrid App(混合模式移動(dòng)應(yīng)用)是指介于web-app、native-app這兩者之間的app,兼具" Native App良好用戶交互體驗(yàn)的優(yōu)勢(shì) "和" Web App跨平臺(tái)開發(fā)的優(yōu)勢(shì) ",需要的朋友可以參考下2019-07-07
three.js簡(jiǎn)單實(shí)現(xiàn)類似七圣召喚的擲骰子
這篇文章主要為大家介紹了three.js簡(jiǎn)單實(shí)現(xiàn)類似七圣召喚的擲骰子示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
firefox下input type="file"的size是多大
firefox對(duì)type="file" 的input的width定義目前是不支持的,但是FF支持size屬性,可以給size設(shè)置一個(gè)值,來(lái)控制上傳框的大小2011-10-10
用move.js庫(kù)實(shí)現(xiàn)百葉窗特效
本文主要介紹了用move.js庫(kù)實(shí)現(xiàn)百葉窗特效的思路與方法。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-02-02
學(xué)前端,css與javascript重難點(diǎn)淺析
JavaScript是一種屬于網(wǎng)絡(luò)的腳本語(yǔ)言,已經(jīng)被廣泛用于Web應(yīng)用開發(fā),CSS(Cascading Style Sheet)層疊樣式表單,今天給大家分享css與javascript重難點(diǎn),感興趣的朋友一起看看吧2020-06-06
跟我學(xué)習(xí)javascript的嚴(yán)格模式
跟我學(xué)習(xí)javascript的嚴(yán)格模式,對(duì)javascript嚴(yán)格模式進(jìn)行概述,進(jìn)入嚴(yán)格模式的方法,以及如何調(diào)用和相關(guān)語(yǔ)法,感興趣的小伙伴們可以參考一下2015-11-11

