Динамический вывод суммы
<html>
<head> <link rel="stylesheet" href="style.css"/> <meta charset="utf-8"> <style> #kalc{ font: 18px sans-serif; color: #fff; width: 960px; border-spacing: 0 2px; } #kalc tr td{ padding: 5px; background: #1C93B5; } #kalc tr td:nth-child(1){ width: 50%; } #kalc tr td:nth-child(2){ text-align: center; width: 20%; } #kalc tr td:nth-child(3){ text-align: center; width: 10%; } #kalc tr td:nth-child(4){ width: 20%; text-align: center; } #kalc input{ width: calc(100% - 80px); text-align: center; } </style> </head> <table id="kalc"> <tr> <td>Наименование работ</td> <td>Кол-во</td> <td>Цена</td> <td>Стоимость</td> </tr> <tr class="goods" price="229"> <td>Демонтаж кирпич, перегородок толщ. 1/2 кирпича</td> <td><input placeholder="0"/> кв.м.</td> <td>229</td> <td><span class="out">0</span></td> </tr> <tr class="goods" price="459"> <td>Демонтаж кирпич, стен толщиной в 1 кирпич</td> <td><input placeholder="0"/> кв.м.</td> <td>459</td> <td><span class="out">0</span></td> </tr> <tr> <td></td> <td></td> <td><button id="b">ПОСЧИТАТЬ</button></td> <td><div id="out">0</div></td> </tr> </table> <br /> <script> goods=[].map.call(document.querySelectorAll(".goods"), function(x){return x}) prices=goods.map(function(x){return +x.getAttribute("price")}) count=function(arr1, arr2){ var arr=[] for(var i=0; i<arr1.length; i++) arr.push(arr1[i]*arr2[i]) return arr.reduce(function(x, y){return x + y}) } inputs=goods.map(function(x){return x.querySelector("input")}) outs=goods.map(function(x){return x.querySelector(".out")}) inputs.forEach(function(x, i){x.onkeyup=function(){outs[i].innerHTML=+this.value*prices[i]}}) b.onclick=function(){ var numbers=inputs.map(function(x){return +x.value}) out.innerHTML=count(numbers, prices) } </script> </html> Как сделать чтоб итог выводился не по клику на кнопу а также динамически как у верхних наименований? |
goods=[].map.call(document.querySelectorAll(".goods"), function(x){return x}) prices=goods.map(function(x){return +x.getAttribute("price")}) count=function(arr1, arr2){ var arr=[] for(var i=0; i<arr1.length; i++) arr.push(arr1[i]*arr2[i]) return arr.reduce(function(x, y){return x + y}) } inputs=goods.map(function(x){return x.querySelector("input")}) outs=goods.map(function(x){return x.querySelector(".out")}) inputs.forEach(function(x, i, arr){ x.onkeyup=function(){ outs[i].innerHTML=+this.value*prices[i] var numbers = arr.map(function(x){return +x.value}); out.innerHTML=count(numbers, prices); }; }) b.onclick=function(){ var numbers=inputs.map(function(x){return +x.value}) out.innerHTML=count(numbers, prices) } |
Спасибишче огомное!!! Не сочтите за наглость ещё один вопрос. Как реалищовать автоматический вывод price в тэг td чтоб каждый раз его не забивать отдельно?
|
Можно так.
var goods = [].map.call(document.querySelectorAll(".goods"), function(x){return x}) var prices = goods.map(function(x){ var td = x.children[2]; var price = x.getAttribute('price'); var text = document.createTextNode(price); td.appendChild(text); return +price; }); count=function(arr1, arr2){ var arr=[] for(var i=0; i<arr1.length; i++) arr.push(arr1[i]*arr2[i]) return arr.reduce(function(x, y){return x + y}) } inputs=goods.map(function(x){return x.querySelector("input")}) outs=goods.map(function(x){return x.querySelector(".out")}) inputs.forEach(function(x, i, arr){ x.onkeyup=function(){ outs[i].innerHTML=+this.value*prices[i] var numbers = arr.map(function(x){return +x.value}); out.innerHTML=count(numbers, prices); }; }) b.onclick=function(){ var numbers=inputs.map(function(x){return +x.value}) out.innerHTML=count(numbers, prices) } |
Цитата:
|
Цитата:
|
Зато рони и компашка могут случайно написать такой код, который оргастически удовлетворит ТСа. :)
|
Часовой пояс GMT +3, время: 10:56. |