2013-11-15 3 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'; 

ДИВ не результат вы думаете, это должно быть ... Это говорит о том, что идентификатор не то, что мы думаем, что здесь:

var div = document.getElementById(id); 

Что я подтвердил с помощью:

console.log(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

Смежные вопросы