Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   не могу разобраться с массивом ! (https://javascript.ru/forum/misc/8477-ne-mogu-razobratsya-s-massivom.html)

jenyokCoder 28.03.2010 21:20

не могу разобраться с массивом !
 
Хелло всем !( решил написать простенькие tabs и вот те на , ) извините за столь глупые вопросы , только новичок в этом деле...
вот вообщем трабла : не отрабатывает код !!!
function tabs_forum( q,w,e,t ){
var Arrq = new Array(q,w,e,t);
for(c=0;c<4;c++) { document.getElementById( Arrq[c].value ).style.display ='none'; }
}
function forum_tabs ( obj_for  ){
switch ( obj_for ) {
  case 't1':
if( obj_for == 't1' )  document.getElementById( obj_for ).style.display ='block';
else tabs_forum ( 't2','t3','t4','t5' );
    break;
    case't2':
if( obj_for == 't2' )  document.getElementById( obj_for ).style.display ='block';
else tabs_forum ( 't1','t3','t4','t5' );
    break;
    case 't3':
if( obj_for == 't3' )  document.getElementById( obj_for ).style.display ='block';
else tabs_forum ( 't1','t2','t4','t5' );
    break;
    case 't4':
if( obj_for == 't4' )  document.getElementById( obj_for ).style.display ='block';
else tabs_forum ( 't1','t2','t3','t5' );
    break;
    case 't5':
if( obj_for == 't5' )  document.getElementById( obj_for ).style.display ='block';
else tabs_forum ( 't1','t2','t3','t4' );
    break;
}
все это крепиться к вот этому коду.
<div align="center">Профиль форума</div>
| <a href="javascript:forum_tabs('t1');">Поля профиля</a>
| <a href="javascript:forum_tabs('t2');">Внешние функции</a>
| <a href="javascript:forum_tabs('t3');">Управление mail</a>
| <a href="javascript:forum_tabs('t4');">Статистика</a>
| <a href="javascript:forum_tabs('t5');">Сообщения,темы,вложения</a>
|
<div align="center" id="t1">axaxa</div>
<div align="center" id="t2" style="display:none;">asasas</div>
<div align="center" id="t3" style="display:none;">sdsdsd</div>
<div align="center" id="t4" style="display:none;">fdsfsdf</div>
<div align="center" id="t5" style="display:none;">asdasdas</div>

подскажите в чем дело !!!
заранее благодарен !!!

Aetae 28.03.2010 23:34

Используйте какую_нить приличную прогу для дебага, тот же файербаг, это поможет хотябы знать почему не обрабатывает:

1 ая проблема: забыта закрывающая функцию forum_tabs скобка.

А вот далее уже проблем с самим кодом:
2. Зачем то впихан if else, rjгда case ('в случае') и так равно нужному значению:
switch ( obj_for ) {case  't4':/**/break;} равносильно if(obj_for=='t4') {/**/}

Таким образом else не может быть вызвано никогда, а потому не работает часть кода ответственная за сокрытие.
3. И да, элемент массива вызывается просто Arrq[c], никаких value, а потому даже если бы эта функция вызывалась - она бы не работала.

В общем учите матчасть.)

jenyokCoder 29.03.2010 00:46

Спасибо ) что-то сразу не подумал ((( бывает же элементарный переключатель не сообразил как использовать ...
как хорошо что есть где спросить =))
вот и решение :
function tabs_forum( q,w,e,t ){
var Arrq = new Array( q,w,e,t );
for(c=0;c<4;c++) { document.getElementById( Arrq[c] ).style.display ='none'; }
}
function forum_tabs ( obj_for  ){
switch ( obj_for ) {
case 't1': document.getElementById( obj_for ).style.display ='block'; 
tabs_forum ( 't2','t3','t4','t5' ); break;
case't2':  document.getElementById( obj_for ).style.display ='block'; 
tabs_forum ( 't1','t3','t4','t5' )  break;
case 't3': document.getElementById( obj_for ).style.display ='block'; 
tabs_forum ( 't1','t2','t4','t5' ); break;
case 't4': document.getElementById( obj_for ).style.display ='block'; 
tabs_forum ( 't1','t2','t3','t5' ); break;
case 't5': document.getElementById( obj_for ).style.display ='block'; 
tabs_forum ( 't1','t2','t3','t4' ); break; 
 }
}

Правда ещё кода многовато ) но уже есть сдвиги ,,, сильно не критикуйте +)


Часовой пояс GMT +3, время: 12:30.