Hello everyone. There is a code. If anyone is too lazy to read them, here is a link to codepen with convenient reading of the code https://codepen.io/otdyhaem/pen/EbMVML

The problem is this: when I first add the amounts and then the deadlines, then all the norms, but when I add the amounts after the deadlines, then from the 2nd time suddenly there are a lack of cells for the table. Rummaged everything in the code did not find an error. Can someone point to it?)))

var i = 1; var i2 = 1; var srabator = 0; var tedeus = 1; var cp = tedeus; $("#ad").click(function() { var a = prompt("От скольких дней ?", 0); var b = prompt("До скольких дней?", 1); var something = parseInt(a) + 1; $('#srok' + i).after("<tr id ='srok" + (++i) + "'> <td id = 'srok" + i + "td" + i2 + "'> Ot " + a + " do " + b + " dney</td" + "</tr>"); for (i2 = 1; i2 < tedeus + 1; i2++) { $("#srok" + i + "td" + i2).after("<td id = 'srok" + i + "td" + (i2 + 1) + "'><input ></td>"); } i2 = 1; /* $('#srok'+i).after('<tr id = "srok'+(++i)+'"><td>От 1 до '+a+' дней</td><td id = "td'+(i)+'"><input id = "any'+(i)+'"</td></tr>' + '<tr id = "srok'+(++i)+'"><td>От '+ (something) +' дней и выше</td><td id = "td'+(i)+'"><input id = any'+i+"</td></tr>"); var elements = document.getElementsByTagName("tr"); elements[1].parentNode.removeChild(elements[1]); for(var t = 0 ; t<$("#neznayu td").length;t++) { if(t>1) $("#neznayu td")[t].remove(); } if(tedeus>0) tedeus--; for(var t = 0 ; t<=i;t++) { for(var h = 0;h<$("#srok"+t+" td").length;h++) { if(h>1) $("#srok"+t+" td input")[h].remove(); } }*/ }); $("#adsumm").click(function() { var interv = prompt("Введите интервал сумм", 1); if (srabator == 0) { $("#ted" + tedeus).html("От 1 до " + interv); srabator++; } var someth2 = parseInt(interv) + 1; $("#ted" + tedeus).after("<td id ='ted" + (++tedeus) + "'> от " + someth2 + " и больше"); var mmm = tedeus - 1; for (var mm = 1; mm <= i + 1; mm++) { $("#srok" + mm + "td" + mmm).after("<td id = 'srok" + i + "td" + (tedeus) + "' ><input type ='text'></td"); } /*for(var t = 0 ; t<=i;t++) { for(var h = 0;h<$("#srok"+t+" td").length;h++){ if(h>2) $("#srok"+t+" td")[h].remove(); } } for(var t = 0 ; t<$("#neznayu td").length;t++) { if(t>2) $("#neznayu td")[t].remove(); } */ }); 
 td { border: 1px solid black; } table { border: 1px solid black; } tr { border: 1px solid black; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <table> <tr id="neznayu"> <td> </td> <td id="ted1">Для любой суммы</td> <th><a id="adsumm" href="#">Добавить интервал сумм</a></th> </tr> <tr id="srok1"> <td>На любой срок </td> <td id="srok1td1"> <input type="text" id="any1" value=0 .4></td> </tr> <tr id="summ"> <td><a id="ad" href="#">добавить интервал сроков</a></td> </tr> </table> <div id="otvet"> </div> 

    1 answer 1

    First, you knocked down the line numbering when adding a row to the table, which is why they just drove.

    enter image description here

    We fix it so that the zero column does not have an id .

     $('#srok'+i).after("<tr id ='srok"+(++i)+"'> <td> Ot "+a+" do "+b+" dney</td><td id = 'srok"+i+"td"+i2+"'><input ></td>" + "</tr>"); for(i2 = 1 ; i2<tedeus;i2++) { $("#srok"+i+"td"+i2).after("<td id = 'srok"+i+"td"+(i2+1)+"'><input ></td>"); } 

    And secondly, you did not iterate through the rows, because you substituted i which does not change instead of mm.

     $("#srok"+mm+"td"+mmm).after("<td id = 'srok"+mm+"td"+(tedeus)+"' ><input type ='text'></td");} 

    Better yet, get rid of global variables and dynamically access elements. But this is yourself, the working version is at the moment lower.

     var i = 1; var i2 = 1; var srabator = 0 ; var tedeus = 1; var cp = tedeus; $("#ad").click(function() { var a = prompt("От скольких дней ?",0); var b = prompt("До скольких дней?",1); var something = parseInt(a)+1; $('#srok'+i).after("<tr id ='srok"+(++i)+"'> <td> Ot "+a+" do "+b+" dney</td><td id = 'srok"+i+"td"+i2+"'><input ></td>" + "</tr>"); for(i2 = 1 ; i2<tedeus;i2++) { $("#srok"+i+"td"+i2).after("<td id = 'srok"+i+"td"+(i2+1)+"'><input ></td>"); } i2 = 1; /* $('#srok'+i).after('<tr id = "srok'+(++i)+'"><td>От 1 до '+a+' дней</td><td id = "td'+(i)+'"><input id = "any'+(i)+'"</td></tr>' + '<tr id = "srok'+(++i)+'"><td>От '+ (something) +' дней и выше</td><td id = "td'+(i)+'"><input id = any'+i+"</td></tr>"); var elements = document.getElementsByTagName("tr"); elements[1].parentNode.removeChild(elements[1]); for(var t = 0 ; t<$("#neznayu td").length;t++) { if(t>1) $("#neznayu td")[t].remove(); } if(tedeus>0) tedeus--; for(var t = 0 ; t<=i;t++) { for(var h = 0;h<$("#srok"+t+" td").length;h++) { if(h>1) $("#srok"+t+" td input")[h].remove(); } }*/ }); $("#adsumm").click(function() { var interv = prompt("Введите интервал сумм",1); if(srabator==0){ $("#ted"+tedeus).html("От 1 до " + interv); srabator++;} var someth2 = parseInt(interv)+1; $("#ted"+tedeus).after("<td id ='ted"+(++tedeus)+"'> от "+someth2+" и больше"); var mmm = tedeus-1; for(var mm = 1 ; mm<=i+1;mm++){ $("#srok"+mm+"td"+mmm).after("<td id = 'srok"+mm+"td"+(tedeus)+"' ><input type ='text'></td");} /*for(var t = 0 ; t<=i;t++) { for(var h = 0;h<$("#srok"+t+" td").length;h++){ if(h>2) $("#srok"+t+" td")[h].remove(); } } for(var t = 0 ; t<$("#neznayu td").length;t++) { if(t>2) $("#neznayu td")[t].remove(); } СО ВТОРОГО РАЗА ВЫДАЕТ ПОЛНУЮ ХУЕТУ!!! РАЗОБРАТЬСЯ */ }); 
     td{border:1px solid black;} table{border:1px solid black;} tr{border:1px solid black;} 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <table> <tr id = "neznayu"> <td> </td> <td id = "ted1">Для любой суммы</td> <th><a id = "adsumm" href = "#">Добавить интервал сумм</a></th> </tr> <tr id = "srok1"> <td>На любой срок </td> <td id = "srok1td1"> <input type = "text" id = "any1" value = 0.4></td> </tr> <tr id = "summ"> <td><a id = "ad" href= "#">добавить интервал сроков</a></td></tr> </table> <div id = "otvet"> </div> 

    • Thank you very much, I understood the mistakes, they will not again))) - Plug Play