2011-01-25 99 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>標籤內(這也是一個標準)
  • 您試圖訪問對象時,他們尚未加載