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