2010-12-17 130 views
1

我想打开一个div并使用这个函数关闭它,但它不起作用,哪里是错误的部分,我不能修复它,任何人都可以帮助我吗?Javascript if if else else

function Element(id) 
{  
    if(document.getElementById(id).style.display = 'block') 
    { 
     document.getElementById(id).style.display = 'block'; 
    } 
    else 
    { 
     document.getElementById(id).style.display = 'none'; 
    } 
} 
+0

请通过单击工具栏中的格式代码按钮来正确格式化您的代码。 – SLaks 2010-12-17 17:39:57

回答

1

谢谢!这一个工作。但我改变了if里面的代码。因为它说,如果你发现块应该是没有。

function Element(id) { 
    if(document.getElementById(id).style.display == 'none') { 
     document.getElementById(id).style.display = 'block'; 
    } else { 
     document.getElementById(id).style.display = 'none'; 
    } 
} 
3

您的if语句分配属性而不是比较它。
更改====

+0

为了澄清@SLaks的答案,'='是赋值运算符(例如'foo =“bar”')。 '=='和'==='是比较运算符(例如'if(foo ==“bar”')。 – charliegriefer 2010-12-17 17:41:48

+0

具体而言,if(...)中的=应该被改变,但其他的不应该。 – psmay 2010-12-17 17:43:51

1
function Element(id) { 
     if(document.getElementById(id).style.display == 'block') { 
      document.getElementById(id).style.display = 'block'; 
     } else { document.getElementById(id).style.display = 'none'; } 
} 
+0

Thank you!This one worked。!but like this; – Extelliqent 2010-12-17 17:49:44

3

我建议你用三元运算符改写它,它更多的可读性和可维护性:

var element = document.getElementById(id); 
element.style.display = element.style.display === 'block' ? 'none' : 'block'; 
+0

将'?'和':'上移一行,或者你可能成为分号插入的牺牲品 – xj9 2010-12-17 17:59:49

+0

@indieinvader:我不认为分号插入会在他的第一个版本中发生了,即使他在报表之前做了回报。 – KooiInc 2010-12-17 20:23:30

0

作为第一个条件没有影响你并不需要一个else或三元运算符。所以这就足够了......

if(document.getElementById(id).style.display != 'block') 
{ 
    document.getElementById(id).style.display = 'none'; 
}; 
+0

啊,我看到你自己的回答有反过来的动作,所以这不再适用。 – 2010-12-17 18:25:16