JavaScript代码不工作,可以';t隐藏/显示div内容

JavaScript代码不工作,可以';t隐藏/显示div内容,javascript,html,hide,element,show,Javascript,Html,Hide,Element,Show,新的堆栈溢出和JavaScript作为一个整体 我一直在尝试制作一个简单的函数,将单击时几个div元素的内联显示属性从“none”更改为“block”。尝试了这里类似问题的不同代码位,但都没有成功。这是密码。如果格式不正确,我很抱歉:( 代码: subGroupIdStyle = document.getElementById('subGroupId').style; 函数切换菜单项(子类ID){ subjectIDStyle=document.getElementById('subject

新的堆栈溢出和JavaScript作为一个整体

我一直在尝试制作一个简单的函数,将单击时几个div元素的内联显示属性从“none”更改为“block”。尝试了这里类似问题的不同代码位,但都没有成功。这是密码。如果格式不正确,我很抱歉:(

代码:

subGroupIdStyle = document.getElementById('subGroupId').style;
函数切换菜单项(子类ID){
subjectIDStyle=document.getElementById('subjectId').style;
var see=subsubidStyle.display;
如果(请参见==‘无’){
参见='块';
}否则{
见=‘无’;
}
};

计算机组件

CPU

+
+
+
+ 主板

+
+
+
+ 内存

+
+
+
+ 硬盘驱动器

+
+
+
+
试试这个:

subGroupIdStyle = document.getElementById('subGroupId').style;
更改为

subGroupIdStyle = document.getElementById(subGroupId).style;

将变量包装为“”时,您没有传递该变量

subGroupIdStyle = document.getElementById(subGroupId).style;
删除Subcode ID中的“”,这样实际上可以传递变量字符串

另外,不要执行
see='block';
do
subkidStyle.display='block'
,对于else条件也是如此

代码
see='block'
不起作用,因为您当时只是复制了subkidStyle.display的值,而您可以使用它来检查值,当您更改
see
的值时,它不会更改
subkidStyle.display
的值。您应该避免同时使用
see
的值nd使用
subwidStyle。在适当的位置显示

函数切换菜单项(子类ID){
SubsubIDStyle=document.getElementById(SubsubId).style;
var see=subsubidStyle.display;
如果(请参见==‘无’){
SUBSUBIDSTYLE.display='block';
}
否则{
subsubidStyle.display='none';
}
};

计算机组件

CPU +
+
+
+ 主板 +
+
+
+ 内存 +
+
+
+ 硬盘驱动器 +
+
+
+
如果
条件,最好使用单行
。变量传递错误。您正在应用字符串而不是传递变量。您可以这样使用

                document.getElementById(subGroupId)
并且
see='block';
不会覆盖元素样式。因此,您可以使用像
variable.style.display=“block”

函数切换菜单项(子类ID){
var subsubidStyle=document.getElementById(subsubId);
SubkidStyle.style.display=(SubkidStyle.style.display='none')?'block':'none';
}

计算机组件

CPU

+
+
+
+ 主板

+
+
+
+ 内存

+
+
+
+ 硬盘驱动器

+
+
+
+
您有两个错误:

1-不应将变量SUBSUBID括在引号中

2-您不能通过以下方式更改dom的样式:

  var see = subGroupIdStyle.display;
  if (see == 'none') {
    see = 'block';
  } else {
    see = 'none';
  }
使用

subkidStyle.display='block';


您只是在更改变量
的值,请参见
。您需要更新DOM中元素的
样式
。请使用
document.getElementById('subseId')。style.display=see=='none'?'block':'none';
。我建议您创建一个类
。隐藏{display:none;}
并使用
.classList.toggle('hide')进行切换
问题在于,您只是在复制属性的值。因此,当您更新该变量时,它不会影响对象中的属性。@Tushar的注释是最恰当的方式,但如果您不熟悉三元运算符,请尝试使用
子类型。显示
而不是
请同时在
if
else
中查看
将其他答案与此相同(删除引号)已经介绍过了。要替换
请参见
。请解释为什么它不能与
一起使用请参见
@Rajesh,是的,我这样做了。谢谢!它现在工作得很好!在函数的参数周围换行“”不会正确传递变量,对吗?或者我又错过了什么吗?@Pete,当你换行变量的时候名称用引号括起来,它不再是变量,而是一个字符串,因此无论单击什么,您都在函数中传递“subseId”。@Pete,我建议您在编写代码时使用Firebug或任何调试器,您将能够看到活动变量的值以及更多内容,这将帮助您更好地了解ba中发生的事情ckground。此外,如果您的问题通过以下任一答案解决,请选择正确答案。