2013-11-15 61 views
0

我正在使用html和css製作樹結構。 這是我應該達到的最終結構:http://jsfiddle.net/yrE7N/1/Div可見性切換不起作用

我需要的是,點擊節點時,它的子節點會出現。

我做這個至今:

JS小提琴:http://jsfiddle.net/ZTkLg/11/

我用這個js函數

var _hidediv = null; 
    function showdiv(id) { 
    if(_hidediv) 
     _hidediv(); 
    var div = document.getElementById(id); 
    div.style.display = 'block'; 
    _hidediv = function() { div.style.display = 'none'; }; 
} 

的事情是,JS的功能似乎並沒有切換div stage-two的可見性。

我已經在此頁面上使用過此功能:http://leonardorestaurant.in/menu它工作,但我不能在這種情況下找出問題。

+0

一個問題我和第二小提琴看到的是'showdiv(二)'不流通文本它會傳遞一個不存在的變量。使用''two''代替 – helion3

回答

1

嘗試

<a href=# onclick="showdiv('two');">Some text here</a> 

var flag = true; 
function showdiv(id) { 
    var div = document.getElementById(id); 
    div.style.display = flag ? 'none' : 'block'; 
    flag = !flag; 
} 

演示:Fiddle

+0

圍繞'href'屬性放置一些引號。 – PHPglue

+0

我加了'display:none;'到'第二階段'。小提琴仍然工作,但它需要兩次點擊才能顯示div。任何想法爲什麼? – Newtt

+0

@Siddharth然後設置'var flag = false;' –

0

在我的瀏覽器控制檯打印出:

Uncaught TypeError: Cannot read property 'style' of null 

這意味着,在這裏:

div.style.display = 'block'; 

DIV是不是你認爲它應該是這個結果......這告訴我們的id是不是我們認爲這裏:

var div = document.getElementById(id); 

其中我證實使用:

console.log(id); 

在你的功能。

的ID實際上是 <div id="two">

所以,基本上你已經擁有你正在尋找的元素。

但是,你有更大的問題,這就是你需要一個切換功能,我只是猜測。嘗試使用這樣的:

function toggleDiv(id) { 
    var el = document.getElementById(id); 
    var newDisplayValue = "none"; 
    if (el.style.display && el.style.display === "none") { 
     newDisplayValue = "block"; 
    } 
    el.style.display = newDisplayValue; 
} 

,並改成這樣:

<a href=# onclick="toggleDiv('two');"> 

看到它here