Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.07.2015, 18:33
Интересующийся
Отправить личное сообщение для blogivan Посмотреть профиль Найти все сообщения от blogivan
 
Регистрация: 14.07.2015
Сообщений: 10

Динамический вывод суммы
<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>

Как сделать чтоб итог выводился не по клику на кнопу а также динамически как у верхних наименований?

Последний раз редактировалось blogivan, 15.07.2015 в 18:36.
Ответить с цитированием
  #2 (permalink)  
Старый 15.07.2015, 20:37
Интересующийся
Отправить личное сообщение для salexseen Посмотреть профиль Найти все сообщения от salexseen
 
Регистрация: 24.03.2014
Сообщений: 11

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)
    }
Ответить с цитированием
  #3 (permalink)  
Старый 15.07.2015, 21:00
Интересующийся
Отправить личное сообщение для blogivan Посмотреть профиль Найти все сообщения от blogivan
 
Регистрация: 14.07.2015
Сообщений: 10

Спасибишче огомное!!! Не сочтите за наглость ещё один вопрос. Как реалищовать автоматический вывод price в тэг td чтоб каждый раз его не забивать отдельно?
Ответить с цитированием
  #4 (permalink)  
Старый 15.07.2015, 21:15
Интересующийся
Отправить личное сообщение для salexseen Посмотреть профиль Найти все сообщения от salexseen
 
Регистрация: 24.03.2014
Сообщений: 11

Можно так.
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)
}
Ответить с цитированием
  #5 (permalink)  
Старый 15.07.2015, 22:01
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от blogivan
Как сделать чтоб
Надо побольше плодить одинаковых тем в расчете что теория подтвердится на практике https://ru.wikipedia.org/wiki/%D0%A2...BD%D0%B0%D1%85
Ответить с цитированием
  #6 (permalink)  
Старый 16.07.2015, 18:12
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

Сообщение от kostyanet
Надо побольше плодить одинаковых тем в расчете что теория подтвердится на практике https://ru.wikipedia.org/wiki/%D0%A2...BD%D0%B0%D1%85
почитал теорему. Мне кажется она ни к месту, ибо бесконечное кол-во тем (да и даже очень большое кол-во тем) автор создать не сможет. Это не так тривиально и требует минимум несколько секунд.
Ответить с цитированием
  #7 (permalink)  
Старый 16.07.2015, 19:04
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Зато рони и компашка могут случайно написать такой код, который оргастически удовлетворит ТСа.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамический вывод инф-ции из бд для новостей сайта in9emix AJAX и COMET 2 30.07.2012 12:19
Вывод переменных MasterHrust Javascript под браузер 4 03.08.2011 15:41
Динамический список из DIV`ов и INPUT`ов Andrew_li jQuery 5 09.06.2011 15:23
Пошаговый вывод скрипта для IE всех версий. Zidky Элементы интерфейса 10 17.06.2009 18:27
Динамический вывод текстовых сообщений Артём Тарасов Общие вопросы Javascript 4 19.02.2009 13:36