@modernstyle
Code GOD

Синтаксис для создания измененных переменных типа variable+i используя .each?

Господа а подскажите пожалуйста синтаксис для прикрепления i к новым переменным внутри петли. Код выглядит так (по клику создается дополнительный ряд таблицы внутри которого производятся вычисления):



var i = 1;<br>
$("button").on('click', function() {<br>
  $("table tr:nth-child(2)").clone().find("input").each(function() {<br>
    $(this).attr({<br>
      'id': function(_, id) { return id + i },<br>
      'name': function(_, name) { return name + i },<br>
      'value': ''               <br>
    });<br>
  }).end().appendTo("table");<br>
  <br>
<br>
  var 	myTable = new calculationLine (($('input#one'+i).val()), ($('input#two'+i).val()));<br>
  		sumResult = myTable.sumMethod();<br>
	$( 'input#sum'+i ).val(sumResult);<br>
<br>
  i++;<br>
});<br>


Проблемное место там где создается новый конструктор — именно здесь я хочу присвоить myTable и sumResult порядковые числа i

работа
  • Вопрос задан
  • 3014 просмотров
Решения вопроса 1
@Silver_Clash
Кажется я понял что имеется ввиду :)

Вы хотите каждой вновь добавленной строке поставить в соответствие некие пронумерованные переменные. Вопрос только в том что вы с ними хотите делать? Ваши переменные объявленные внутри функции-обработчика события onClick все равно будут уничтожены после завершения работы функции. Вам нужно экспортировать их за пределы функции?
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
ertaquo
@ertaquo
Во-первых, у вас нигде не изменяется значение переменной i. Во-вторых, в attr подстановка функции как значения атрибута используется только для массивов, см. доки.
Правильнее будет так:
$("table tr:nth-child(2)").clone().find("input").attr({
  'id': function(index, val) { return val + index },
  'name: function(index, val) { return val + index },
  'value' : ''
}).end().appendTo("table");
Ответ написан
@Silver_Clash
А нельзя ли нумеровать строки таблицы? можно же сделать что то типа:

var tr = $("table tr:last");
var v1 = tr.find('input.one');
var v2 = tr.find('input.two');

myTable = new calculationLine (v1, v2);


только тогда нужно отказаться от id элементов и использовать классы. И ради бога, переименуйте функцию конструктор calculationLine в CalculationLine
Ответ написан
@modernstyle Автор вопроса
Code GOD
Спасибо, учту. По поводу решения — видимо не то, что я ищу.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы