Похоже он эти национальные запятые в точки превращает для float.
|
суммирую все данные введенных ячеек вычисляю процент от всех введенных данных добавляю еще одну цифру которую распределяю в процентном соотношении по всем ячейкам и вывожу получившийся результат по каждой ячейке при это разделив каждое значение на определенную цифру.
Про точки и запятые превращаю введенные данные в число не зависимо от того как ввели число с запятой или с точкой |
процент от общей суммы
UJKJDF,
ввести числа в инпуты ... <!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <script> window.addEventListener("DOMContentLoaded", function() { function c() { var d = a.reduce(function(b, a) { return b + a }, 0); a.forEach(function(a, c) { var e = 100 * a / d, h = 80 * e / 100, g = f[c].cells; g[1].innerHTML = e.toFixed(2) + "%"; g[2].innerHTML = h.toFixed(2) }) } var f = document.querySelectorAll("tbody tr"), a = []; [].forEach.call(f, function(d, b) { a[b] = 0; d.querySelector("input").addEventListener("input", function() { a[b] = +this.value.replace(",", ".") || 0; c() }) }) }); </script> </head> <body> <table width="400" summary="" > <thead> <tr> <th>num</th> <th>%</th> <th>x = 80</th> </tr> </thead> <tbody> <tr> <td><input type="text"></td> <td></td> <td></td> </tr> <tr> <td><input type="text"></td> <td></td> <td></td> </tr> <tr> <td><input type="text"></td> <td></td> <td></td> </tr> <tr> <td><input type="text"></td> <td></td> <td></td> </tr> </tbody> </table> </body> </html> |
Да пойдет не если я захочу поставить вместо <th>x = 80</th>
<th><input type="text" ></th> ячейку в которую буду вводить число a.forEach(function(a, c) { var e = 100 * a / d, h = 80 * e / 100, // что здесь надо поставить вместо 80? g = f[c].cells; g[1].innerHTML = e.toFixed(2) + "%"; g[2].innerHTML = h.toFixed(2) |
UJKJDF,
а как вы обычно получаите значение из инпута? |
UJKJDF,
нулевая ячейка для первого инпута, в сумме всего не учавствует, таблице дан класс. <!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <script> window.addEventListener("DOMContentLoaded", function() { function c() { var d = a.reduce(function(b, a, i) { return i ? b + a : 0 }, 0); a.forEach(function(k, c) { if(!c||!d) return; var e = 100 * k / d, h = a[0] * e / 100, g = f[c].cells; g[1].innerHTML = e.toFixed(2) + "%"; g[2].innerHTML = h.toFixed(2) }) } var f = document.querySelectorAll(".harvest tr"), a = []; [].forEach.call(f, function(d, b) { a[b] = 0; d.querySelector("input").addEventListener("input", function() { a[b] = +this.value.replace(",", ".") || 0; c() }) }) }); </script> </head> <body> <table width="400" class="harvest" > <thead> <tr> <th>num</th> <th>%</th> <th><input type="text"></th> </tr> </thead> <tbody> <tr> <td><input type="text"></td> <td></td> <td></td> </tr> <tr> <td><input type="text"></td> <td></td> <td></td> </tr> <tr> <td><input type="text"></td> <td></td> <td></td> </tr> <tr> <td><input type="text"></td> <td></td> <td></td> </tr> </tbody> </table> </body> </html> |
вывожу результат что хотел сделать
теперь возник вопрос как при выборе радиокнопки (С НДС) h = k + a[0] * e / 100, (еще разделить на 1.18) <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title> poni</title> <script> window.addEventListener("DOMContentLoaded", function() { function c() { var d = a.reduce(function(b, a, i) { return i ? b + a : 0 }, 0); a.forEach(function(k, c) { if(!c||!d) return; var e = 100 * k / d, h = k + a[0] * e / 100, g = f[c].cells; g[2].innerHTML = e.toFixed(0) + "%"; g[3].innerHTML = h.toFixed(4) }) } var f = document.querySelectorAll("tbody tr"), a = []; [].forEach.call(f, function(d, b) { a[b] = 0; d.querySelector("input").addEventListener("input", function() { a[b] = +this.value.replace(",",".") || 0; c() }) }) }); </script> </head> Распределение доставки по позициям <table summary="" border="1" bordercolor="red" style="color:red;font-size:20px;"> <thead> <tr> <th>ЦЕНЫ<br> <input type="radio" name="disc" checked value="1" >Без НДС <input type="radio" name="disc" value="1.18" >С НДС</th> <th>ВВОДИМ ЦЕНУ</th> <th>%</th> <th>Результат без НДС</th> </tr> </thead> <tbody> <tr> <td width="250">Укажите стоимость доставки</td> <td><input type="text" style="color:red;font-size:20px;" placeholder="ДОСТАВКА" size="15" maxlength="15"></td> <td align="center" width="50"></td> <td align="left" width="100"></td> </tr> <tr> <td align="right">Цена =</td> <td><input type="text" style="color:red;font-size:20px;" placeholder="ВВОДИМ ЦЕНУ" size="15" maxlength="15"></td> <td></td> <td></td> </tr> <tr> <td align="right">Цена =</td> <td><input type="text" style="color:red;font-size:20px;" placeholder="ВВОДИМ ЦЕНУ" size="15" maxlength="15"></td> <td></td> <td></td> </tr> <tr> <td align="right">Цена =</td> <td><input type="text" style="color:red;font-size:20px;" placeholder="ВВОДИМ ЦЕНУ" size="15" maxlength="15"></td> <td></td> <td></td> </tr> </tbody> </table> <body> </body> </html> |
UJKJDF,
:-? учебник почитать может ... if(чекбокс.чекед) h /= 1.18; |
делю на значение выбранной кнопки
value=1 или 1.18 предварительно сделав этот текст числом если это надо сделать var rad = f.elements['disc'].value; // что должно быть вместо f ? h = (k + a[0] * e / 100)/ parseFloat(rad); |
попаразитировала на последнем примере от рони,
так должно быть? <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title> poni</title> <script> window.addEventListener("DOMContentLoaded", function() { function c() { var d = a.reduce(function(b, a, i) { return i ? b + a : 0 }, 0); a.forEach(function(k, c) { if(!c||!d) return; //Добавила var koef = document.querySelectorAll("[name='disc']")[1].checked ? 1.18 : 1 var e = 100 * k / d, h = a[0] * e / 100 / koef,//Добавила g = f[c].cells; g[2].innerHTML = e.toFixed(2) + "%"; g[3].innerHTML = h.toFixed(2) }) } var f = document.querySelectorAll("tbody tr"), a = []; [].forEach.call(f, function(d, b) { a[b] = 0; d.querySelector("input").addEventListener("input", function() { a[b] = +this.value.replace(",", ".") || 0; c() }) }) //Добавила var disc = document.querySelectorAll("[name='disc']"); [].forEach.call(disc, function(el) { el.addEventListener("click", c) }) }); </script> </head> Распределение доставки по позициям <table summary="" border="1" bordercolor="red" style="color:red;font-size:20px;"> <thead> <tr> <th>ЦЕНЫ<br> <input type="radio" name="disc" checked value="1" >Без НДС <input type="radio" name="disc" value="1.18" >С НДС</th> <th>ВВОДИМ ЦЕНУ</th> <th>%</th> <th>Результат без НДС</th> </tr> </thead> <tbody> <tr> <td width="250">Укажите стоимость доставки</td> <td><input type="text" style="color:red;font-size:20px;" placeholder="ДОСТАВКА" size="15" maxlength="15"></td> <td align="center" width="50"></td> <td align="left" width="100"></td> </tr> <tr> <td align="right">Цена =</td> <td><input type="text" style="color:red;font-size:20px;" placeholder="ВВОДИМ ЦЕНУ" size="15" maxlength="15"></td> <td></td> <td></td> </tr> <tr> <td align="right">Цена =</td> <td><input type="text" style="color:red;font-size:20px;" placeholder="ВВОДИМ ЦЕНУ" size="15" maxlength="15"></td> <td></td> <td></td> </tr> <tr> <td align="right">Цена =</td> <td><input type="text" style="color:red;font-size:20px;" placeholder="ВВОДИМ ЦЕНУ" size="15" maxlength="15"></td> <td></td> <td></td> </tr> </tbody> </table> <body> </body> </html> |
Часовой пояс GMT +3, время: 11:58. |