Помощи в скрипте
Возможно сделать из двух действий одно
var kolvo1 = f.elements['kolvo1'].value; var kolvo1 = kolvo1.replace(",","."); |
var kolvo1 = f.elements['kolvo1'].value.replace(",",".");
пока сделал так |
теперь стал вопрос если у меня kolvo1...15
15 строк нужен цикл, но не понимаю как эту строку засунуть в цикл |
UJKJDF,
напишите функцию которая будет возвращать нужный результат, пока маловато от вас информации, может в целом опишите алгоритм. |
var i = 1; var kolvo1 = f.elements['kolvo'+i].value.replace(",","."); // так тоже работает, но как зациклить имя var kolvo1 |
UJKJDF,
а зачем вам 15 переменных? |
беру данные из input 15 вводимых ячеек и каждому присваиваю свою переменную после определенных действий вывожу все 15 результатов
|
UJKJDF,
вполне хватит 1 переменной |
ок попробую сделать решение с циклом для одной переменной
|
UJKJDF,
определённые действия это что? |
Похоже он эти национальные запятые в точки превращает для 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> |
Мда ребята, таким как вы минификаторы кода не нужны, вы и сами справляетесь :) Сами через неделю нихера не поймёте, что эти a, b, с и d значат.
|
Manyasha,
:) |
Sigizmund2012,
а нам и не надо:dance: А автору, если он захочет переименовать функции более понятно, придется разобраться, что они делают (название-то суть должно отражать). Глядишь и запомнит что-нибудь полезное)) |
Спасибо проверю!
вопрос как написать сообщение чтобы появилась кнопка посмотреть? скриптам только учась в свободное время вот решил написать, но первоначальный вариант был слишком длинный и куча переменных к каждому вводимому значению что получиться позже скину. |
UJKJDF,
[HTML run height=300][/HTML] Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title> ДОСТАВКА</title> <script type="text/javascript"> 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 itog = document.querySelectorAll("[name='disc']")[1].checked ? 1 : 1.18 var e = 100 * k / d, h = (a[0] * e / 100 + k)/koef, // itogi = (a[0] * e / 100 + k)*itog, g = f[c].cells; g[2].innerHTML = e.toFixed(0) + "%"; g[3].innerHTML = h.toFixed(4) //g[4].innerHTML = itogi.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) }) }); function addRow(id){ var tbody = document.getElementById(id).getElementsByTagName("TBODY")[0]; var row = document.createElement("TR") var td1 = document.createElement("TD") td1.appendChild(document.createTextNode("Цена =")) var td2 = document.createElement("TD") var td3 = document.createElement("TD") var td4 = document.createElement("TD") row.appendChild(td1); row.appendChild(td2); row.appendChild(td3); row.appendChild(td4); tbody.appendChild(row); } </script> </head> <body> Распределение доставки по позициям <br> <table summary="" border="1" bordercolor="red" style="color:red;font-size:20px;" id="myTable" cellspacing="0"> <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> </tbody> </table> <input type="button" value="Добавить строку" href="javascript://" onclick="addRow('myTable');return false;"> </body> </html> Получилось так. |
если доставка = 0 или не указана
а цена введена то не получается результат с разными радиокнопками получается h = a[0] * e / 100 / koef + k, h = k исправил h = (a[0] * e / 100 + k)/koef, |
UJKJDF,
сначала продумать алгоритм, сделать описание, потом кодить. мысли вслух ... |
нашел как добавлять строки в таблице
возник вопрос как добавить ячейку "input" в TD var td2 = document.createElement("TD") var td3 = document.createElement("input") получается отдельно от таблицы. |
|
Часовой пояс GMT +3, время: 13:36. |