2013-09-21 3 views
0

У меня есть список верхней навигации, каждый из которых предполагает открыть список ссылок на стороне. Сначала этот список ссылок скрыт, тогда он должен отображаться (и предыдущий показанный список ссылок должен быть скрыт). Боковые ссылки отображаются отлично, когда я нажимаю соответствующую верхнюю навигационную ссылку, но всякий раз, когда я нажимаю на одну из этих ссылок, все боковые ссылки исчезают .. решили ее, вызвав функцию, чтобы сохранить он появился, но потом появилась еще одна проблема .. когда я нажимаю еще одну ссылку на верхнюю навигацию (которая, предположим, открывает другой боковой список ссылок), первый не скрывает .. а второй не появляется! ! после длительного поиска и поиска новых вещей, я пробовал много вещей .. и все же он работает неправильно!Сохранение div и скрытие старого

мой JavaScript:

var prevItem = null; 
function hereB(t) 
{ 
    switch (t) 
    { 
     case 'item-1': 
     showIT('left-1'); 
     break; 
     case 'item-2': 
     showIT('left-2'); 
     break; 
    } 
    if(prevItem != null) 
    {  
     var preI = document.getElementById(t); 
     prevItem.className += "box"; 
     prevItem.className = prevItem.className.replace(/{\b}?hereB/, ""); 
    } 
    t.className += " hereB"; 
    prevItem = t; 
} 

function inform(t){alert(document.getElementById(t))} 

function showIT(d) 
{   
    switch(d) 
    { 
     case 'left-1':            
     document.getElementById('left-2').style.display="none"; 
     document.getElementById('left-2').style.visibility="hidden"; 

     document.getElementById(d).style.display="block"; 
     document.getElementById(d).style.visibility="visible";   
     break; 
     case 'left-2': 
     document.getElementById('left-1').style.display="none"; 
     document.getElementById('left-1').style.visibility="hidden"; 

     document.getElementById(d).style.display="block"; 
     document.getElementById(d).style.visibility="visible"; 
     break; 
    } 
} 

здесь все дело в jsFiddle:

http://jsfiddle.net/ZPbNE/4/

любые предложения будут высоко оценены ..

** * *** UPDATE Полный ответ ** * ** * весь код Java Script, чтобы получить все работает нормально и правильно будет так:

<script type="text/javascript"> 
var prevItem = null; 
function hereB(t) 
{  

    showIT(t.hash.substr(1)); 
    if(prevItem != null) 
    {  
     prevItem.className += "box"; 
     prevItem.className = prevItem.className.replace(/{\b}?activeTOP/, ""); 
    } 
    t.className += " activeTOP"; 
    prevItem = t; 
} 

function showIT(d) 
{  

    switch(d) 
    { 
     case 'left-1':            
     document.getElementById('left-2').style.display="none"; 
     document.getElementById('left-2').style.visibility="hidden"; 

     document.getElementById(d).style.display="block"; 
     document.getElementById(d).style.visibility="visible"; 
     break; 
     case 'left-2': 
     document.getElementById('left-1').style.display="none"; 
     document.getElementById('left-1').style.visibility="hidden"; 

     document.getElementById(d).style.display="block"; 
     document.getElementById(d).style.visibility="visible"; 
     break; 
     default: 
     document.getElementById('left-1').style.display="none"; 
     document.getElementById('left-1').style.visibility="hidden"; 
     document.getElementById('left-2').style.display="none"; 
     document.getElementById('left-2').style.visibility="hidden"; 
     break; 
    }  
} 
</script> 

в HTML называют это нравится:

<a href="#item-4" onClick="hereB(this)"> GO item-5 </a> 
+0

Что вы должны быть соответствие с 'switch' заявление в' hereB() '? 't' является' this', который является элементом привязки, а не строкой. Ваши случаи не соответствуют значению 'href', единственное, что они соответствуют, это идентификатор родительского' LI'. – Barmar

+0

THANK YOU SOOOOOOO MUCH .. Я только что заменил 'code'this на имя div, и он магически сработал :)), не могли бы вы ответить на мой вопрос Q как ответ, поэтому я проверяю его? еще раз спасибо – user2517408

ответ

0

Это кажется работать:

function hereB(t) { 
    showIT(t.hash.substr(1)); 
    if (prevItem != null) { 
     prevItem.className += "box"; 
     prevItem.className = prevItem.className.replace(/{\b}?hereB/, ""); 
    } 
    t.className += " hereB"; 
    prevItem = t; 
} 

Я снял switch заявление, а просто использовал идентификатор в хэш HREF. Я также удалил назначение preI; он указывал узел, а не строку на getElementById, и он все равно не использовался.

FIDDLE

+0

спасибо за ответ .. комментарий на мой вопрос ответил правильно .. Я новичок в js, поэтому я действительно не знаю, для чего «хэш» .. Я буду искать его и получить больше учебника по js .. еще раз спасибо за вашу реакцию – user2517408

+0

хэш является частью URL-адреса в href, начинающемся с '#'. – Barmar

+0

спасибо за объяснение .. что я имею в виду, я не знаю, для чего все это утверждение ... могу ли я задать другой связанный вопрос Q? после изменения здесьB (this) здесьB ('item-1') эффекты активной ссылки исчезли .. поэтому я заменил «t» на document.getelementbyid (t) на js-код, и все же css-effecs, которые работали раньше, больше не работают. У вас есть идея? спасибо – user2517408

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