鍍金池/ 問答/HTML/ 關(guān)于style.display

關(guān)于style.display

如下是寫的一個下拉菜單代碼片段

menu[0].onclick=function(){
var str=document.getElementById('menu3');
var dis=str.style.display;
console.log(dis);
if(dis=='none'){

str.style.display='block'; //這個地方為什么寫str.style.display能夠正常顯示 但是用上面已經(jīng)賦值的
}else{ //dis就不行
str.style.display='none';

}

}

回答
編輯回答
神曲

dis=str.style.display;
這里dis獲取到的是str.style.display的值(none或者block),和str這個元素沒有關(guān)系,所以改變dis的值對str沒影響;
dis=str.style就沒問題;str和style明顯是個json對象結(jié)構(gòu),display是字符串,這里牽扯的就是數(shù)據(jù)的引用類型和值類型的問題

2018年2月11日 18:27
編輯回答
小曖昧

代碼:

var dis = str.style.display;

其中 str.style.display 獲取的值和賦值后的值 dis 都是字符串,其屬于值類型,兩者沒有關(guān)系。

賦值后,改變 dis 的值并不會影響 str.style.display 的值。

所以就會出現(xiàn)你所說的情況:寫 str.style.display 能夠正常顯示,用上面已經(jīng)賦值的 dis 就不行。

可以百度 JS 值類型和引用類型了解相關(guān)知識點。

以上。

2017年2月23日 09:24
編輯回答
夢一場

你先執(zhí)行的是賦值操作,字符串下面肯定沒有屬性啊

2017年12月11日 02:05
編輯回答
陪妳哭

你要設(shè)置的是str.style的display屬性
str.style.display這里獲取得到他的屬性值,默認是 空字符串,你在一個空字符串上面設(shè)置當然是不行的。

2017年6月23日 01:42
編輯回答
淡墨

兄弟我們正規(guī)寫JS 是不是這個格式的, str.style.display = "none"/"block" 首先你這個格式就需要改正兄弟,其次你把這個寫到IF語句中,也就是說當你前面的DIS值 == none 時才執(zhí)行此操作, 所有你的dis指已經(jīng)不是之前的
str.style.display 了 ,如果你想重新用 你就必須再寫一遍 str.style.display 。希望對你有所幫助!

2018年4月2日 07:39
編輯回答
舊螢火
var dis=str.style.display;

dis變量里邊存的只是一個字符串,你修改它并沒有對DOM進行操作

2018年2月26日 14:27