Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как вызвать функцию в функции (https://javascript.ru/forum/misc/9967-kak-vyzvat-funkciyu-v-funkcii.html)

TanTaL91 13.06.2010 11:39

Как вызвать функцию в функции
 
Есть фунция flags, в не йнеобходимо вызвать функцию nomer что бы они вместе заполнили нужны поля. Но ни как не получается вызвать их вместе. Уже 4 часа мучаюсь, весь нет облазил, ни как не могу найти решения. Подскажите пожалуйста. :help:
function flags(id)
   {

       document.getElementById("cont1").innerHTML="";

       for(t=0; t<100; t++) 
       {
         if(id == tableFlag[window.t][1])
         {  
         document.getElementById("cont1").innerHTML+=("<option value='"+tableFlag[window.t][0]+"'>"+tableFlag[window.t][2]+"</option>");
         }     
       }        
   } 
   
function nomer(id)                                                        
   {
       document.getElementById("cont2").innerHTML="";
       var td = 1;
       var i=0;
       while (i<=100) 
       {
         if(td == 1) {var class1 = "t15"; class2 = "t13"; td = 2;}
         else {var class1 = "t13"; class2 = "t14"; td = 1;}
         if(id == tableNumber[i][0])
         {  
         document.getElementById("cont2").innerHTML+=("<tr> <td width='113' class='left "+class1+"'>"+tableNumber[i][1]+"</td><td width='235' class='"+class2+"'>"+tableNumber[i][2]+"</td><td width='219' class='"+class1+"'>"+tableNumber[i][3]+"</td></tr>");
         }
         i++;
       }  
   }

micscr 13.06.2010 12:06

А почему так не делаешь:
function flags(id) { 
// ...
nomer(id);

}
?
И еще: innerHTML не надо делать +=. Накапливай в переменной а за циклом уже присвой obj.innerHTML = переменная.

TanTaL91 13.06.2010 12:19

Если вставляю в начало, то блокируется все что после этой функции(но функция выводится)

function flags(id)
   {
       nomer(id);  
       document.getElementById("cont1").innerHTML="";
       for(t=0; t<100; t++) 
       {
         if(id == tableFlag[window.t][1])
         {  
         document.getElementById("cont1").innerHTML+=("<option value='"+tableFlag[window.t][0]+"'>"+tableFlag[window.t][2]+"</option>");
         }     
       }
   }


Если ставлю в конец, то выводится весь текст функции в которую вставляю, а функция nomer(id); не выводится...
function flags(id)
   {  
       document.getElementById("cont1").innerHTML="";
       for(t=0; t<100; t++) 
       {
         if(id == tableFlag[window.t][1])
         {  
         document.getElementById("cont1").innerHTML+=("<option value='"+tableFlag[window.t][0]+"'>"+tableFlag[window.t][2]+"</option>");
         }     
       }
       nomer(id);
   }


Пытался даже делать отдельную функцию и заталкивать их вместе, но 1 работает, 2рая блокируется... И не важно какую поставить вперед, она будет работать...

micscr 13.06.2010 12:26

сделай в каждой функции в начале alert(id) и посмотри что передается в "не работающую" - т.к. скорее всего переопределяешь id, хотя из твоего кода и не видно.

TanTaL91 13.06.2010 12:34

У меня почему то после вывода цикла, вообще все блокируется... он просто дальше не читает...

В чем может быть дело?

qwoiejfoiej 13.06.2010 12:53

Что подразумевается под словом "блокируется"? Комп виснет или функция не выполняется?

TanTaL91 13.06.2010 12:54

нашел из за чего не хочет идти дальше, но как и чем это заменить не знаю:(

Когда начинаю перебирать циклом, то после него не хочет, но если вместо window.t поставить определеную цифру, он четко завершает и продолжает работать дальше. Но в том то и смысл что надо перебирать, что бы обойти весьмассив...
if(id == tableFlag[window.t][1])

TanTaL91 13.06.2010 13:02

Как можносделать Выборку из JS массива

var tableFlag = [
                    [1, 1, 427], 
                    [2, 1, 423], 
                    [3, 2, 927], 
                    [4, 2, 923],
                    [5, 3, 027], 
                    [6, 3, 023],                    
                    ];

qwoiejfoiej 13.06.2010 13:07

Блин я туплю, у вас длина таблиц шесть и шестнадцать(вам надо было их в этой же теме запостить), а вы их перебираете до сотни. Естественно он их выводит и вылетает с ошибкой.
Замените t<100 на t<tableFlag.length и i<=100 на i<tableNumber.length

TanTaL91 13.06.2010 13:17

Всем форумчанам, огромное спасибо.

qwoiejfoiej вам особая благодарность, один пост перевернул весь рабочий день:) Еще раз огромное спасибо!


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