課程
/前端開發(fā)
/JavaScript
/JavaScript入門篇
為什么最后不能用控制類名的方法取消設(shè)置呢?求解
2015-08-07
源自:JavaScript入門篇 4-1
正在回答
因?yàn)閛ne已經(jīng)不是原來的one,樣式已經(jīng)被之前的JS改變了。建議用removeAttribute()方法吧。
function?cancel(){ ???????var?myset=confirm("是否取消設(shè)置?") ???????if(myset==true){ ???????????mychar.removeAttribute('style'); ??????} ???}//定義"取消設(shè)置"的函數(shù)
Julieljy 提問者
不好意思 我說的關(guān)于className不正確 應(yīng)該是object.className=classname object是用document.ElementById獲取的對象名。mychar.className="one"沒問題
但是在設(shè)置style和className后,同樣是:
<div id="txt" ?style="width:XXX ?height:XXX ?dispaly: XXX "?? class="one">
但是行內(nèi)樣式優(yōu)先級大于內(nèi)聯(lián)樣式,所以one設(shè)置的樣式不會起作用。
不知道我這么說能不能聽懂,首先注意你的mychar,它是變量(變量類型是Object),不是標(biāo)簽id。之前講過更改className屬性是為標(biāo)簽更改的。因此若想div應(yīng)用one樣式,應(yīng)該是 txt.className="one".
但是這么做也不會成功,這是因?yàn)樵谀阍O(shè)置了一系列 mychar.style.XXX后,就相當(dāng)于這樣:
<div id="txt"? style="width:XXX? height:XXX? dispaly:?XXX ">
然后若按照我更改的 txt.className="one",會變成這樣:
<div id="txt" ?style="width:XXX ?height:XXX ?dispaly: XXX " class="one">
相當(dāng)于為div標(biāo)簽添加了行內(nèi)樣式屬性和class屬性,而之前學(xué)過行內(nèi)樣式優(yōu)先級大于內(nèi)聯(lián)樣式,因此div樣式還是用的行內(nèi)樣式,不會取消設(shè)置。
因此最快捷的做法就是不用設(shè)置className,也不用在添加one樣式,直接用
mychar.removeAttribute("style");(為什么不用txt.removeAttribute("style"),這是因?yàn)閠xt僅僅是標(biāo)簽,而只有對象才具有屬性和方法,這也就是之前為什么要var mychar=document.getElementById("txt")了,會將id為txt的標(biāo)簽轉(zhuǎn)換為對象。)
這樣就會變成
<div id="txt">
這樣可以取消style屬性,會恢復(fù)為div的id(txt)設(shè)置的默認(rèn)樣式。
來自瘋?cè)嗽旱奈?/a> 回復(fù) Julieljy 提問者
舉報(bào)
JavaScript做為一名Web工程師的必備技術(shù),本教程讓您快速入門
1 回答為什么最后不能取消設(shè)置
1 回答為什么這樣寫最后那個取消設(shè)置弄不了
3 回答為什么最后這個取消設(shè)置。不能把它設(shè)置成原來的CSS樣式?
3 回答為什么最后取消設(shè)置,彈不出框?
3 回答為什么不能取消設(shè)置
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2015-08-07
因?yàn)閛ne已經(jīng)不是原來的one,樣式已經(jīng)被之前的JS改變了。建議用removeAttribute()方法吧。
2015-08-17
不好意思 我說的關(guān)于className不正確 應(yīng)該是object.className=classname object是用document.ElementById獲取的對象名。mychar.className="one"沒問題
但是在設(shè)置style和className后,同樣是:
<div id="txt" ?style="width:XXX ?height:XXX ?dispaly: XXX "?? class="one">
但是行內(nèi)樣式優(yōu)先級大于內(nèi)聯(lián)樣式,所以one設(shè)置的樣式不會起作用。
2015-08-08
不知道我這么說能不能聽懂,首先注意你的mychar,它是變量(變量類型是Object),不是標(biāo)簽id。之前講過更改className屬性是為標(biāo)簽更改的。因此若想div應(yīng)用one樣式,應(yīng)該是 txt.className="one".
但是這么做也不會成功,這是因?yàn)樵谀阍O(shè)置了一系列 mychar.style.XXX后,就相當(dāng)于這樣:
<div id="txt"? style="width:XXX? height:XXX? dispaly:?XXX ">
然后若按照我更改的 txt.className="one",會變成這樣:
<div id="txt" ?style="width:XXX ?height:XXX ?dispaly: XXX " class="one">
相當(dāng)于為div標(biāo)簽添加了行內(nèi)樣式屬性和class屬性,而之前學(xué)過行內(nèi)樣式優(yōu)先級大于內(nèi)聯(lián)樣式,因此div樣式還是用的行內(nèi)樣式,不會取消設(shè)置。
因此最快捷的做法就是不用設(shè)置className,也不用在添加one樣式,直接用
mychar.removeAttribute("style");(為什么不用txt.removeAttribute("style"),這是因?yàn)閠xt僅僅是標(biāo)簽,而只有對象才具有屬性和方法,這也就是之前為什么要var mychar=document.getElementById("txt")了,會將id為txt的標(biāo)簽轉(zhuǎn)換為對象。)
這樣就會變成
<div id="txt">
這樣可以取消style屬性,會恢復(fù)為div的id(txt)設(shè)置的默認(rèn)樣式。