Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помощи в скрипте (https://javascript.ru/forum/misc/64631-pomoshhi-v-skripte.html)

UJKJDF 25.08.2016 18:42

Помощи в скрипте
 
Возможно сделать из двух действий одно
var kolvo1 = f.elements['kolvo1'].value;
   var kolvo1 = kolvo1.replace(",",".");

UJKJDF 25.08.2016 20:12

var kolvo1 = f.elements['kolvo1'].value.replace(",",".");
пока сделал так

UJKJDF 25.08.2016 21:51

теперь стал вопрос если у меня kolvo1...15
15 строк нужен цикл, но не понимаю как эту строку засунуть в цикл

рони 25.08.2016 22:07

UJKJDF,
напишите функцию которая будет возвращать нужный результат, пока маловато от вас информации, может в целом опишите алгоритм.

UJKJDF 25.08.2016 22:43

var i = 1;
  var kolvo1 = f.elements['kolvo'+i].value.replace(",",".");
// так тоже работает, но как зациклить имя var kolvo1

рони 25.08.2016 22:46

UJKJDF,
а зачем вам 15 переменных?

UJKJDF 25.08.2016 22:49

беру данные из input 15 вводимых ячеек и каждому присваиваю свою переменную после определенных действий вывожу все 15 результатов

рони 25.08.2016 22:50

UJKJDF,
вполне хватит 1 переменной

UJKJDF 25.08.2016 22:54

ок попробую сделать решение с циклом для одной переменной

рони 25.08.2016 22:58

UJKJDF,
определённые действия это что?

warren buffet 26.08.2016 06:13

Похоже он эти национальные запятые в точки превращает для float.

UJKJDF 27.08.2016 11:23

суммирую все данные введенных ячеек вычисляю процент от всех введенных данных добавляю еще одну цифру которую распределяю в процентном соотношении по всем ячейкам и вывожу получившийся результат по каждой ячейке при это разделив каждое значение на определенную цифру.
Про точки и запятые превращаю введенные данные в число не зависимо от того как ввели число с запятой или с точкой

рони 27.08.2016 12:31

процент от общей суммы
 
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>

UJKJDF 30.08.2016 21:48

Да пойдет не если я захочу поставить вместо <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)

рони 30.08.2016 21:51

UJKJDF,
а как вы обычно получаите значение из инпута?

рони 30.08.2016 22:10

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>

UJKJDF 31.08.2016 19:04

вывожу результат что хотел сделать
теперь возник вопрос как при выборе радиокнопки (С НДС)
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>

рони 31.08.2016 19:37

UJKJDF,
:-? учебник почитать может ...
if(чекбокс.чекед) h /= 1.18;

UJKJDF 01.09.2016 16:48

делю на значение выбранной кнопки
value=1 или 1.18 предварительно сделав этот текст числом если это надо сделать
var rad = f.elements['disc'].value;  // что должно быть вместо f ?

h = (k + a[0] * e / 100)/ parseFloat(rad);

Manyasha 01.09.2016 19:10

попаразитировала на последнем примере от рони,
так должно быть?
<!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>

Sigizmund2012 01.09.2016 20:39

Мда ребята, таким как вы минификаторы кода не нужны, вы и сами справляетесь :) Сами через неделю нихера не поймёте, что эти a, b, с и d значат.

рони 01.09.2016 20:52

Manyasha,
:)

Manyasha 01.09.2016 23:36

Sigizmund2012,
а нам и не надо:dance:
А автору, если он захочет переименовать функции более понятно, придется разобраться, что они делают (название-то суть должно отражать). Глядишь и запомнит что-нибудь полезное))

UJKJDF 02.09.2016 16:43

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

рони 02.09.2016 16:46

UJKJDF,
[HTML run height=300][/HTML]

Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

UJKJDF 02.09.2016 17:15

<!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>


Получилось так.

UJKJDF 02.09.2016 17:36

если доставка = 0 или не указана
а цена введена
то не получается результат с разными радиокнопками
получается
h = a[0] * e / 100 / koef + k,
h = k

исправил
h = (a[0] * e / 100 + k)/koef,

рони 02.09.2016 18:25

UJKJDF,
сначала продумать алгоритм, сделать описание, потом кодить. мысли вслух ...

UJKJDF 02.09.2016 21:58

нашел как добавлять строки в таблице
возник вопрос как добавить ячейку "input" в TD
var td2 = document.createElement("TD")
var td3 = document.createElement("input")
получается отдельно от таблицы.

рони 02.09.2016 22:59

UJKJDF,
http://javascript.ru/forum/events/64...tml#post426158


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