Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как умножить все числа в созданных строках таблицы? (https://javascript.ru/forum/dom-window/39306-kak-umnozhit-vse-chisla-v-sozdannykh-strokakh-tablicy.html)

j.r.r 24.06.2013 23:17

Как умножить все числа в созданных строках таблицы?
 
Есть вот такой вот скрипт. Есть массив pr_it для произведения чисел введённых в ячейки nm_q и nm_p. Как сделать, чтобы при новом срабатывании функции все значения во всех строках были перемножены?

ПС Пытался делать отдельно для каждой строки, но значение pr_it переносится на следующую строку, а не ту, где введены числа... Помогите пожалуйста!

<script type="text/javascript">
function addRow(id){
    
    document.getElementById("prit").innerHTML = document.getElementById("qualit_a").value*document.getElementById("prezzo").value;  
    
    var nn = document.getElementsByTagName('tr').length-4;
    var nm_l = new Array();
    var nm_q = new Array();/* колличество */
    var nm_p = new Array();/* цена */
    var pr_it = new Array();
    var td1 = new Array();
    
if (nn<2){
    tutt.parentNode.removeChild (tutt);
} else {
    itog.parentNode.removeChild (itog);
}
    var tbody = document.getElementById
    (id).getElementsByTagName("TBODY")[0];
    
    var row = new Array();
    row[nn] = document.createElement("TR")
    row[nn].setAttribute('bgcolor','#666');
    if(nn<2){
    row[1].setAttribute('bgcolor','#fff000');
    }
    td1[nn] = document.createElement("TD")
    td1[nn].appendChild(document.createTextNode(nn+1))
    
    var td2 = new Array();
    td2[nn] = document.createElement("TD")
    td2[nn].appendChild (document.createElement("input"))
 
document.body.appendChild(td2[nn]);
td2[nn].innerHTML="<input type='text' name='nome_lavor' id='nm_l[nn]'>";
 
    var td3 = new Array();
    td3[nn] = document.createElement("TD")
    td3[nn].appendChild(document.createElement("input"))
    
    var td4 = new Array();
    td4[nn] = document.createElement("TD")
    td4[nn].appendChild (document.createElement("input"))
 
document.body.appendChild(td4[nn]);
td4[nn].innerHTML="<input type='text' name='qualit_a' id='nm_q[nn]'>";
 
    var td5 = new Array();
    td5[nn] = document.createElement("TD")
    td5[nn].appendChild (document.createElement("input"))
 
document.body.appendChild(td5[nn]);
td5[nn].innerHTML="<input type='text' name='prezzo' id='nm_p[nn]'>";
 
    var td6 = new Array();
    td6[nn] = document.createElement("TD")  
    td6[nn].appendChild (document.createElement("a"))
document.body.appendChild(td6[nn]);
td6[nn].innerHTML="<a name='pr_it' id='pr_it[nn]'>";
td6[nn].innerHTML=document.getElementById("nm_p[nn]").value*document.getElementById("nm_q[nn]").value;
 
    var td7 = new Array();
    td7[nn] = document.createElement("TD")
    td7[nn].appendChild (document.createTextNode("7"))
    
    row[nn].appendChild(td1[nn]);
    row[nn].appendChild(td2[nn]);
    row[nn].appendChild(td3[nn]);
    row[nn].appendChild(td4[nn]);
    row[nn].appendChild(td5[nn]);
    row[nn].appendChild(td6[nn]);
    row[nn].appendChild(td7[nn]);
    tbody.appendChild(row[nn]);
 
    var tbody_1 = document.getElementById
    (id).getElementsByTagName("TBODY")[0];
    var row2 = new Array();
    row2[nn] = document.createElement("TR")
    row2[nn].setAttribute('id','itog');
    var td = new Array();
    td[nn] = document.createElement("TD")
    td[nn].appendChild(document.createTextNode("Итого"))
    row2[nn].appendChild(td[nn]);
    tbody_1.appendChild(row2[nn]);  
}
</script>

рони 25.06.2013 00:31

j.r.r,
мало информации -- нет примера, пусть нерабочего.

j.r.r 25.06.2013 00:41

Есть таблица, которая обрабатывает введённые данные, с возможностью добавить новые строки

<table width="100%" border="1" cellspacing="1" cellpadding="1" id="smet" class="smet">
<tr id='tr_1'>
<td scope="col">№№</td>
<td scope="col">Наимен. работ</td>
<td scope="col">Ед. измерения</td>
<td scope="col">Кол-во</td>
<td scope="col">Цена</td>
<td scope="col">Итого</td>
<td scope="col"><a hid="itog">&nbsp;</a></td>
</tr>
<tr>
<td scope="row"><a id="numer">1</a></td>
<td>
<input type="text" name="nome_lavor" id="nome_lavor">
</td>
<td><a href="#" onclick="hiddenShow_2();" id="mera" class="num_1">М2</a></td>
<td><input type="text" name="qualit_a" id="qualit_a" /></td>
<td><input type="text" name="prezzo" id="prezzo"></td>
<td><a id="prit">6</a></td>
<td>&nbsp;</td>
</tr>
<tr id="tutt">
<td scope="row"><a id="itog_tut">Итого</td>
</tr>
</table>
<a href="#" id="agg" onclick="addRow('smet') ;return false;">+</a>


Одна из ячеек является произведением 2х других. Как заставить правильно считать это произведение во вновь созданных кнопках? Причём сразу во всех созданных строках

рони 25.06.2013 02:08

j.r.r,
вариант ... добавляем строки плюсом, ставим цену и количество смотрим итог ...
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
<table width="100%" border="1" cellspacing="1" cellpadding="1" id="smet" class="smet">
 <tr id='tr_1'>
 <td scope="col">№№</td>
 <td scope="col">Наимен. работ</td>
 <td scope="col">Ед. измерения</td>
 <td scope="col">Кол-во</td>
 <td scope="col">Цена</td>
 <td scope="col">Итого</td>
 </tr>
 </table>
 <a href="#" id="agg" onclick="addRow('smet') ;return false;">+</a>
 <script>
  var nn = 0;
  function addRow(id)
  { var row =  document.getElementById(id).insertRow(++nn)
    var sel = row.insertCell(0);
    var a = document.createElement("a");
    a.appendChild(document.createTextNode(nn))
    sel.appendChild(a);
    sel = row.insertCell(1);
    sel.appendChild(document.createElement("input"));
    sel = row.insertCell(2);
    a = document.createElement("a");
    a.appendChild(document.createTextNode("М2"));
    a.href="#";
    sel.appendChild(a);
    sel = row.insertCell(3);
    var input1 = document.createElement("input");
    sel.appendChild(input1);
    sel = row.insertCell(4);
    var input2 = document.createElement("input");
    sel.appendChild(input2);
    sel = row.insertCell(5);
    a = document.createElement("a");
    var text = document.createTextNode("0")
    a.appendChild(text);
    sel.appendChild(a);
    input1.onkeyup = input2.onkeyup = function ()
{

   text.data = (parseFloat(input1.value)||0)*(parseFloat(input2.value)||0);
}
  }

 addRow('smet')
 </script>
</body>
</html>

j.r.r 25.06.2013 17:51

Спасибо большое!!! То что надо!


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