Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   немогу передать значение из функции в функцию js (https://javascript.ru/forum/events/80074-nemogu-peredat-znachenie-iz-funkcii-v-funkciyu-js.html)

Юсуф 24.04.2020 04:49

немогу передать значение из функции в функцию js
 
Доброе утро! Прошу не судить строго и помочь небольшим примером.
Есть код js который размножает строки в таблице


<div class="rows">
       <table id="SmetaTable">
           <thead><tr><td>№</td><td>Наименование</td><td>Ед. изм.</td><td>Объем</td><td>Мат-ал</td><td>СМР</td><td>Всего</td</</thead>
           <tbody id="form"> </tbody>
             
             <tr>
                 <td colspan="7">
                        <button type="button" id="dobavit">Новая строка</button>
                        <button type="button" id="dobavit2">Новый раздел</button>
                 </td>
             </tr>
       </table>
        
  </div>


И js код

var $btn = $('#dobavit'); // кнопка создание подраздела (строки)
     var $btns = $('#dobavit2'); //Кнопка для создание раздела
     var $nums =  2;
     var $numsStroca =1;

       $btns.click(function (ResutNms) { // Функция создает раздел с input внутри
             var $ResutNms = $nums++;
                $('#form').append("<tr><td colspan='7'><input id='Razdel' type='' value='"+$ResutNms+".'/></td></tr>");
         });
      
       $btn.click(function () {  // Функция создает строку
         var $NumPodstr = numsStroca++;
         var $result = ResutNms+'.'+NumPodstr ; // Должно получиться 1.1, 1.2. и т.п.

          $('#form').append("<tr><td>"+result+"</td><td id='SmetaTableName'><input type='text'  /></td><td id='SmetaTableSelec'><select><option></option></select></td><td id='SmetaTableObem'><input type='text' value='' /></td><td id='SmetaTableMat'><input type='text' value='' /></td><td id='SmetaTableSMR'><input type='text' value='' /></td><td id='SmetaTableItog'><input type='text' value='' /></td></tr>");

         });




Так вот все нормально работает но мне нужно сделать нумерацию. то есть при каждом добавление раздела должно быть номер подраздела. нумерация раздела у меня получается, а вот никак не могу провести нумерацию подраздел.
Результат должен получиться такой:
1. Раздел
1.1. Строка
1.2. Строка
1.3. Строка
2. Раздел
2.1. Строка
2.2. Строка
...

voraa 24.04.2020 07:24

У вас в строке 13 используется не описанная переменная ResutNms. То, что она описана в строке 7 не считается. Это другая функция и от туда не видна. Надо перенести описание этой переменной на уровень выше

var $btn = $('#dobavit'); // кнопка создание подраздела (строки)
     var $btns = $('#dobavit2'); //Кнопка для создание раздела
     var $nums =  2;
     var $numsStroca =1;
     var $NumPodstr;
 
       $btns.click(function (ResutNms) { // Функция создает раздел с input внутри
             $ResutNms = $nums++;
                $('#form').append("<tr><td colspan='7'><input id='Razdel' type='' value='"+$ResutNms+".'/></td></tr>");
         });
       
       $btn.click(function () {  // Функция создает строку
         var $NumPodstr = numsStroca++;
         var $result = ResutNms+'.'+NumPodstr ; // Должно получиться 1.1, 1.2. и т.п.
 
          $('#form').append("<tr><td>"+result+"</td><td id='SmetaTableName'><input type='text'  /></td><td id='SmetaTableSelec'><select><option></option></select></td><td id='SmetaTableObem'><input type='text' value='' /></td><td id='SmetaTableMat'><input type='text' value='' /></td><td id='SmetaTableSMR'><input type='text' value='' /></td><td id='SmetaTableItog'><input type='text' value='' /></td></tr>");
 
         });

Юсуф 24.04.2020 08:01

Цитата:

Сообщение от voraa (Сообщение 523325)
У вас в строке 13 используется не описанная переменная ResutNms. То, что она описана в строке 7 не считается. Это другая функция и от туда не видна. Надо перенести описание этой переменной на уровень выше

var $btn = $('#dobavit'); // кнопка создание подраздела (строки)
     var $btns = $('#dobavit2'); //Кнопка для создание раздела
     var $nums =  2;
     var $numsStroca =1;
     var $NumPodstr;
 
       $btns.click(function (ResutNms) { // Функция создает раздел с input внутри
             $ResutNms = $nums++;
                $('#form').append("<tr><td colspan='7'><input id='Razdel' type='' value='"+$ResutNms+".'/></td></tr>");
         });
       
       $btn.click(function () {  // Функция создает строку
         var $NumPodstr = numsStroca++;
         var $result = ResutNms+'.'+NumPodstr ; // Должно получиться 1.1, 1.2. и т.п.
 
          $('#form').append("<tr><td>"+result+"</td><td id='SmetaTableName'><input type='text'  /></td><td id='SmetaTableSelec'><select><option></option></select></td><td id='SmetaTableObem'><input type='text' value='' /></td><td id='SmetaTableMat'><input type='text' value='' /></td><td id='SmetaTableSMR'><input type='text' value='' /></td><td id='SmetaTableItog'><input type='text' value='' /></td></tr>");
 
         });

Я так пробывал, но у меня перестает работать весь скрипт. не создает строку... Скопирова как у Вас тоже самое

voraa 24.04.2020 08:24

Блин, ну ошибся я
В тексте пишу про одно, а в коде сделал другое.
Написал про $ResutNms (правильно), а вынес другую переменную

var $btn = $('#dobavit'); // кнопка создание подраздела (строки)
     var $btns = $('#dobavit2'); //Кнопка для создание раздела
     var $nums =  2;
     var $numsStroca =1;
     var $ResutNms;
  
       $btns.click(function (ResutNms) { // Функция создает раздел с input внутри
             $ResutNms = $nums++;
                $('#form').append("<tr><td colspan='7'><input id='Razdel' type='' value='"+$ResutNms+".'/></td></tr>");
         });
        
       $btn.click(function () {  // Функция создает строку
         var $NumPodstr = numsStroca++;
         var $result = ResutNms+'.'+NumPodstr ; // Должно получиться 1.1, 1.2. и т.п.
  
          $('#form').append("<tr><td>"+result+"</td><td id='SmetaTableName'><input type='text'  /></td><td id='SmetaTableSelec'><select><option></option></select></td><td id='SmetaTableObem'><input type='text' value='' /></td><td id='SmetaTableMat'><input type='text' value='' /></td><td id='SmetaTableSMR'><input type='text' value='' /></td><td id='SmetaTableItog'><input type='text' value='' /></td></tr>");
  
         });

laimas 24.04.2020 09:57

Цитата:

Сообщение от Юсуф
Должно получиться 1.1, 1.2. и т.п.

Они у вас ни к чему не привязаны?

Юсуф 24.04.2020 12:46

Цитата:

Сообщение от voraa (Сообщение 523327)
Блин, ну ошибся я
В тексте пишу про одно, а в коде сделал другое.
Написал про $ResutNms (правильно), а вынес другую переменную

var $btn = $('#dobavit'); // кнопка создание подраздела (строки)
     var $btns = $('#dobavit2'); //Кнопка для создание раздела
     var $nums =  2;
     var $numsStroca =1;
     var $ResutNms;
  
       $btns.click(function (ResutNms) { // Функция создает раздел с input внутри
             $ResutNms = $nums++;
                $('#form').append("<tr><td colspan='7'><input id='Razdel' type='' value='"+$ResutNms+".'/></td></tr>");
         });
        
       $btn.click(function () {  // Функция создает строку
         var $NumPodstr = numsStroca++;
         var $result = ResutNms+'.'+NumPodstr ; // Должно получиться 1.1, 1.2. и т.п.
  
          $('#form').append("<tr><td>"+result+"</td><td id='SmetaTableName'><input type='text'  /></td><td id='SmetaTableSelec'><select><option></option></select></td><td id='SmetaTableObem'><input type='text' value='' /></td><td id='SmetaTableMat'><input type='text' value='' /></td><td id='SmetaTableSMR'><input type='text' value='' /></td><td id='SmetaTableItog'><input type='text' value='' /></td></tr>");
  
         });

Извините меня конечно, но эффект тот же самый... Весь скрипт перестает работать...

Юсуф 24.04.2020 12:58

Если проверить обычный методом передаваемое $ResutNms в alert($ResutNms); то выдает undefined. Получается программа не видит цифру в переменной $ResutNms во второй функции?

voraa 24.04.2020 13:15

Всей еруды в чужом коде сразу заметить трудно
Зачем
$btns.click(function (ResutNms) {
Кто его туда передает?
Зачем переменные $ResutNms и ResutNms, $NumPodstr и NumPodstr?

var $btn = $('#dobavit'); // кнопка создание подраздела (строки)
     var $btns = $('#dobavit2'); //Кнопка для создание раздела
     var nums =  2;
     var numsStroca =1;
     var ResutNms ;
   
       $btns.click(function () { // Функция создает раздел с input внутри
             ResutNms = nums++;
             numsStroca =1;
                $('#form').append("<tr><td colspan='7'><input id='Razdel' type='' value='"+ResutNms+".'/></td></tr>");
         });
         
       $btn.click(function () {  // Функция создает строку
         var NumPodstr = numsStroca++;
         var result = ResutNms+'.'+NumPodstr ; // Должно получиться 1.1, 1.2. и т.п.
   
          $('#form').append("<tr><td>"+result+"</td><td id='SmetaTableName'><input type='text'  /></td><td id='SmetaTableSelec'><select><option></option></select></td><td id='SmetaTableObem'><input type='text' value='' /></td><td id='SmetaTableMat'><input type='text' value='' /></td><td id='SmetaTableSMR'><input type='text' value='' /></td><td id='SmetaTableItog'><input type='text' value='' /></td></tr>");
   
         });

laimas 24.04.2020 13:25

Юсуф,
что это такое в итоге - статический документ или это хранимые данные? Если хранимые данные то как хранятся?


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