2011-01-25 100 views
-1

我敢肯定,解决方案显而易见,但我花了一个小时,所以非常感谢任何帮助!简单的Javascript,如果语句问题

以下JavaScript是为了让一个div visiable和另一个DIV无形如果变量的loggedIn = “真”:

/* Javascript */ 

function showArticle() 
{ 
document.getElementById('full').style.display = 'block'; 
document.getElementById('summary').style.display = 'none'; 
} 
var loggedin="true"; 
var owned="true"; 
if (loggedin="true") 
{ 
document.write("Logged In"); 
} 
if (owned="true") 
{ 
    showArticle(); 
} 

<!-- HTML --> 
<div id="summary">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</div> 

<div id="full" style="display:none;">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur. 
<div> 

我是否正确地认为这个问题与我的showArticle函数的调用?

+7

你* *所知,任何人以最少的技术知识将能够看到被记录的articlewithout? – 2011-01-25 08:31:51

+1

如果这是JavaScript为什么被标记为[php],[mysql],[project-planning]和[specifications] ...? – BoltClock 2011-01-25 08:32:27

+0

Victor,我知道 - 这个系统只是一个展示功能的概念/原型的证明:) – Jamie 2011-01-25 08:35:37

回答

2

使用

document.getElementById('summary').innerHTML = ''; 

,而不是我复制你的代码到一个文本文件,并试图它 - 它有问题。

我把javascript放在html上面的script标签中。

<html> 
<body> 

<script> 
function showArticle() 
{ 
document.getElementById('full').style.display = 'block'; 
document.getElementById('summary').style.display = 'none'; 
} 
var loggedin="true"; 
var owned="true"; 
if (loggedin="true") 
{ 
document.write("Logged In"); 
} 
if (owned="true") 
{ 
    showArticle(); 
} 

</script> 

<!-- HTML --> 
<div id="summary">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</div> 

<div id="full" style="display:none;">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur. 
<div> 


</body> 
</html> 

失败的原因时,JavaScript的运行div标签还没有被添加到DOM,所以的getElementById返回null。我通过在Firebug/Firefox中使用javascript调试发现了这一点。

如果我将javascript移到了html之后,它就会起作用 - 因为DOM随后会加载这些项目。

<html> 
<body> 
<!-- HTML --> 
<div id="summary">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</div> 

<div id="full" style="display:none;">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur. 
<div> 

<script> 
function showArticle() 
{ 
document.getElementById('full').style.display = 'block'; 
document.getElementById('summary').style.display = 'none'; 
} 
var loggedin="true"; 
var owned="true"; 
if (loggedin="true") 
{ 
document.write("Logged In"); 
} 
if (owned="true") 
{ 
    showArticle(); 
} 

</script> 
</body> 
</html> 
8

变化===,看在这个article(JavaScript的操作者)

if (loggedin=="true") 
..... 
if (owned=="true") 
+0

使用'='被解释为一个赋值语句,并将该变量赋值给if语句中的一个值,并将其值作为一个布尔值。如果您将其分配为“true”,则if将始终运行。 – Neil 2011-01-25 08:35:08

3

它应该是if (a == b),而不是if (a = b):后者分配的b到可变a的值(和然后使用的b值以确定是否运行if条件,在您的示例中始终是这种情况)。

0

而不是登录=“真”写为登录==“真”

0

它真的新手隐藏JavaScript的内容。但是,如果你想要这样做,我会建议擦除内容。的

document.getElementById('summary').style.display = 'none'; 
2
function showArticle() 
{ 
    document.getElementById('full').style.display = 'block'; 
    document.getElementById('summary').style.display = 'none'; 
} 
var loggedin = true; 
var owned = true; 
if (loggedin == true) 
{ 
    alert("Logged In"); 
} 
if (owned == true) 
{ 
    showArticle(); 
} 
2

为我工作(UPD ):

<html> 
<head> 

<script type="text/javascript"> 
window.onload = function() { 
    function showArticle() 
    { 
     document.getElementById('full').style.display = 'block'; 
     document.getElementById('summary').style.display = 'none'; 
    } 

    var loggedin = true, owned = true; 

    if (loggedin == true) 
    { 
     document.write("Logged In"); 
    } 

    if (owned == true) 
    { 
     showArticle(); 
    } 
} 
</script> 
</head> 

<body> 
<!-- HTML --> 
<div id="summary">moo</div> 
<div id="full" style="display:none;">foo</div> 

</body> 
</html> 

那么,什么是错的?

  • 未封闭<div>(第二个)
  • 拨款,而不是能比较(=而不是==
  • 字符串,而不是布尔("true" VS true
  • 脚本没有类型(你应该总是设置它只是一个标准:<script type="text/javascript">
  • 脚本应该在<head>标签内(这也是一个标准)
  • 您试图访问对象时,他们尚未加载