2013-04-25 3 views
2

это код у меня есть:CSS JavaScript PHP DIV показать/скрыть

<? 
    while ($row1 = mysql_fetch_object($result1)) { 
     echo '<a href="#" onclick="showhide("'.$row1->id.'");">Name</a>'; 
     while ($row2 = mysql_fetch_object($result2)) { 
      echo '<div id="'.$row1->id.'">'; 
      echo 'blabla'; 
      echo '</div>'; 
     } 
    } 
?> 
    <script> 
    var state = 'none'; 
    function showhide(layer_ref){ 
    if(state == 'block'){ 
    state = 'none'; 
    }else{ 
    state = 'block'; 
    } 
    if(document.all){ //IS IE 4 or 5 (or 6 beta) 
    eval("document.all." +layer_ref+ ".style.display = state"); 
    } 
    if (document.layers) { //IS NETSCAPE 4 or below 
    document.layers[layer_ref].display = state; 
    } 
    if (document.getElementById &&!document.all) { 
    hza = document.getElementById(layer_ref); 
    hza.style.display = state; 
    } 
    } 
    </script> 

это выводит что-то вроде:

Name 
    blabla 
Name 
    blabla 
... 

и при нажатии на голове (имя) он должен переключить его содержимое (показать/скрыть) , но это не так. Что я делаю не так?

+3

** ** Не используйте 'Eval()', пожалуйста! – BenM

ответ

3

Это может работать для вас:

<script language="JavaScript"> 
    function toggle(id) { 
     var state = document.getElementById(id).style.display; 
      if (state == 'block') { 
       document.getElementById(id).style.display = 'none'; 
      } else { 
       document.getElementById(id).style.display = 'block'; 
      } 
     } 
</script> 

Live demo here>>

+0

mmh, при проверке элементов, 'onclick =" toggle ("'. $ Row1-> project_id.'"); "Выходы:' onclick = "toggle (" 18 ");" (включая странное пространство до 18), он отображает только головы (имя, имя, ..) с большим количеством пробелов между ними ... – Laurent

+2

Я заработал, взгляните на эту скрипку: http://jsfiddle.net/Je6f2/1 / – Laurent

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