0

如下是写的一个下拉菜单代码片段

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能够正常显示 但是用上面已经赋值的
}else{ //dis就不行
str.style.display='none';

}

}

2018-06-14 提问
6 个回答
0

你要设置的是str.style的display属性
str.style.display这里获取得到他的属性值,默认是 空字符串,你在一个空字符串上面设置当然是不行的。

0

dis=str.style.display;
这里dis获取到的是str.style.display的值(none或者block),和str这个元素没有关系,所以改变dis的值对str没影响;
dis=str.style就没问题;str和style明显是个json对象结构,display是字符串,这里牵扯的就是数据的引用类型和值类型的问题

0
var dis=str.style.display;

dis变量里边存的只是一个字符串,你修改它并没有对DOM进行操作

0

代码:

var dis = str.style.display;

其中 str.style.display 获取的值和赋值后的值 dis 都是字符串,其属于值类型,两者没有关系。

赋值后,改变 dis 的值并不会影响 str.style.display 的值。

所以就会出现你所说的情况:写 str.style.display 能够正常显示,用上面已经赋值的 dis 就不行。

可以百度 JS 值类型和引用类型了解相关知识点。

以上。

0

兄弟我们正规写JS 是不是这个格式的, str.style.display = "none"/"block" 首先你这个格式就需要改正兄弟,其次你把这个写到IF语句中,也就是说当你前面的DIS值 == none 时才执行此操作, 所有你的dis指已经不是之前的
str.style.display 了 ,如果你想重新用 你就必须再写一遍 str.style.display 。希望对你有所帮助!

0

你先执行的是赋值操作,字符串下面肯定没有属性啊

撰写答案

你可能感兴趣的

推广链接