亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么這樣不能輸出class屬性?

<script type="text/javascript">

? function add(){

? ? ?var p1 = document.getElementById("p1");

? ? ?p1.className="one";

? ? ? ? ??

? }

? ? ? ?document.write("此段樣式名稱為:"+p1.className+"<br>");

</script>

//以上為什么不能輸出P1的class屬性;

<script type="text/javascript">

? function add(){

? ? ?var p1 = document.getElementById("p1");

? ? ?p1.className="one";

? ? ? ? document.write("此段樣式名稱為:"+p1.className+"<br>");

? }

</script>

而這樣雖然能輸出class屬性,但是會使整個頁面的文本只剩下此段樣式名稱為:one


正在回答

5 回答

第一段代碼中為什么輸出不了p1的值,這是因為你在全局的環境中輸出函數體內的變量,p1的作用域僅在函數體add()中,在全局中是沒有定義的,所以輸出不了,p1沒有定義,自然為空。

第二段代碼你只給了一半,把HTML代碼中完整貼出來才好分析,怎么調用這個函數add()的地方沒有說明白。

0 回復 有任何疑惑可以回復我~

你好!

? ? ? 把?document.write 改成 alert 就可以看到你想要的結果。

當然,要寫在函數里才行。


寫在外面為什么不行?

因為,寫在外面的話,函數還沒有執行,它就經執行了,所以看不到結果;而且等函數執行完了,函數結果已經銷毀了,它還是沒能拿到結果。

所以要寫在里面。

那有沒有別的方法呢? ? 有!

那就是不要函數——直接寫

? ? ?var p1 = document.getElementById("p1");

? ? ?p1.className="one";

? ? ?document.write("此段樣式名稱為:"+p1.className";





0 回復 有任何疑惑可以回復我~

因為你只聲明了一個函數,而沒有去調用執行。

在1-9的學習中有提到過 “函數定義好后,是不能自動執行的“

0 回復 有任何疑惑可以回復我~
#1

慕UI9843876

希望答案被采納一下。
2016-06-06 回復 有任何疑惑可以回復我~

你把完整的代碼給我吧,你這給一半兒,也不好看,多用DW試驗一下就明白了

0 回復 有任何疑惑可以回復我~

注意:我試了一下,兩種寫法都不能輸出P1的class屬性。函數定義好后,是不能自動執行的。寫在函數中的代碼,是在某一條件下需要被調用(例如,點擊事件)。所以,具體的寫法是:將獲取對象和輸出屬性代碼放到函數外,將要改變的 class屬性放在函數中去處理。例如,下面的這種處理:http://img1.sycdn.imooc.com//57545a6e0001282507980838.jpg

0 回復 有任何疑惑可以回復我~
#1

昀韶3351233 提問者

function add(){ var p1 = document.getElementById("p1"); p1.className="one"; } document.write("此段樣式名稱為:"+p1.className+"<br>"); 這段代碼我是這么想的,P1原本是不帶css樣式的,但是在函數add()中它不是給p1設定了樣式one嗎? 講道理執行到document.write的時候不應該也是輸出p1被className修改后的樣式名嗎
2016-06-06 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么這樣不能輸出class屬性?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號