Как я могу накапливать стоимость в переменной с jQuery?

Добрый вечер.

Как я могу накапливать сумму данных в переменной, с jQuery? У меня есть это:

function ejemplo(){
  var obtenValor = $('.otraClase').attr("dato")
  var variableAcumuladora = 0

  $('.claseEjemplo').each(function(){
    variableAcumuladora += Number(datoAcumular)
  });

   capturaAcumulable = Number(variableAcumuladora)

   ...
}

То, что он перемещает, что variableAcumuladora меня сохраняет последняя вошедшая стоимость и прибавляется также число раз, что each он делает поездку. Например, если я имею с переменной obtenValor, и его переместил стоимость 10, потом 20 и потом 30, результата, который он вручает мне, 90 (что я не хочу); То, в чем я нуждаюсь, что variableAcumuladora получите стоимость, которую я получаю с obtenValor.

Например:

Если obtenValor первый у него есть стоимость 10, потом 20 и потом 30 (в зависимости от поездки each), мне нужно, чтобы он сложил 10+20+30 =, 60 и этот результат это сохранял в переменной capturaAcumulable чтобы так мочь печатать это на экране после.

Я надеюсь, что кто-то может помогать мне.

Привет.

Я добавляю кусок html, откуда я получаю стоимость:

В самом деле, в которое я делаю его each, он в таблицу:

...
html +=  
       '<tr class="claseEjempo" dato="'+datoAcumular+'">'+
            '<td>'+valorEjemplo+'</td>'+
            '<td>'+valorEjemplo2+'</td>'+
            ...
         '</tr>'

Есть больше код, но, где я получаю стоимость.

2
задан 23.01.2017, 13:44
0 ответов

Видя твой код HTML, ты мог бы пробовать с этим:

  $('.claseEjemplo').each(function(){
    //Cambia esta linea
    //variableAcumuladora += Number(datoAcumular)
    // (El error es que la variable datoAcumular no existe, solo existe mientras creas la tabla, pero despues de eso solo es un valor de un atributo)
    //Por esta otra linea
    variableAcumuladora += Number($(this).attr("dato"));
    //$(this).attr("dato")<-- Con esta linea le dices que tome el valor del atributo dato de los objetos con la claseEjemplo (tr)
  });

Я надеюсь, что предыдущие линии помогают тебе в твоем специфическом случае, привет.

Предыдущая информация

Ты нуждаешься в том, чтобы повторить строки таблицы, костлявая tr и внутри эти берут соответствующий класс, чтобы накапливать стоимость, в конце концов mostralo в классе, который соответствует ему, но в каждый tr или row. Проверь следующий пример:

Пример с таблицей

function ejemplo() {
  
  $('tr').each(function() {
      var suma = 0;
     $(this).find(".sumar").each(function() {
         suma += Number($(this).attr("dato"));
      });
      $(this).find(".total").first().text(suma);
  });

}
<link href="http://getbootstrap.com/dist/css/bootstrap.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<br/>
<input class="btn btn-info" type="button" onclick="ejemplo()" value="Calcular Acomulado" />
<br/>
<br/>
<table class="table table-bordered table-striped table-hover">
  <thead>
    <tr>
      <td>Valor 1</td>
      <td>Valor 2</td>
      <td>Valor 3</td>
      <td>Total</td>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td class="sumar" dato="10">10</td>
      <td class="sumar" dato="20">20</td>
      <td class="sumar" dato="30">30</td>
      <td class="total">0</td>
    </tr>
    <tr>
      <td class="sumar" dato="11">11</td>
      <td class="sumar" dato="21">21</td>
      <td class="sumar" dato="31">31</td>
      <td class="total">0</td>
    </tr>
    <tr>
      <td class="sumar" dato="12">12</td>
      <td class="sumar" dato="22">22</td>
      <td class="sumar" dato="32">32</td>
      <td class="total">0</td>
    </tr>
    <tr>
      <td class="sumar" dato="13">13</td>
      <td class="sumar" dato="23">23</td>
      <td class="sumar" dato="33">33</td>
      <td class="total">0</td>
    </tr>
  </tbody>
</table>

Дополнительная информация....

В действительности ты не накапливаешь ее, потому что ты имеешь:

var variableAcumuladora = 0

внутри función и ты был бы должен объявлять переменную fuera de la función для того, чтобы не была возобновлена стоимость в нуль каждый раз, когда ты вошел в метод.

Проверь этот пример, я надеюсь смочь помогать тебе :-)

var variableAcumuladora = 0;

function ejemplo() {
  var valor = parseInt($("#valor").val());
  valor = isNaN(valor) ? 0 : valor;
  
  //La variableAcumuladora tendrias que declararla fuera de la función
  //de la forma como lo hacias la inicializabas cada vez
  variableAcumuladora += valor;
  
  $("#valor").val("");
  $("#valor").focus();
  $("#acumulado").text(variableAcumuladora);
  
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Valor para acumular
<input type=number id="valor" />
<input type="button" value="Acumular" onclick="ejemplo()" />
<p>Valor acumulado
  <div id="acumulado"></div>
</p>

Момент...

Ты был бы должен показывать твой код HTML потому что он может, что each укажите на то, что всегда в ту же стоимость поэтому одинокий тебя накапливает последнее, было бы необходимым видеть это, чтобы знать, что он то есть в each, квакайте, что там находится деталь не в цикле, я отношусь, по отношению к которому с источника ты имеешь 30 30 30 и не 10 20 30, как ты упоминаешь, если только ты не будешь называть другие объекты.

Если я понял немного лучше, что ты хочешь сделать...., оно было бы нечто похожим:

function ejemplo(){
  var variableAcumuladora =0;
   $('.otraClase').each(function(){
     var valor = $(this).attr("dato");
    variableAcumuladora += Number(valor) ;
  });
  
  $("#valor").text(variableAcumuladora);
  /*
  var obtenValor = $('.otraClase').attr("dato")
  var variableAcumuladora = 0

  $('.claseEjemplo').each(function(){
    variableAcumuladora += Number(datoAcumular)
  });

   capturaAcumulable = Number(variableAcumuladora)
*/
   
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label class="otraClase" dato="10">10</label>
<br/><label class="otraClase" dato="20">20</label>
<br/><label class="otraClase" dato="30">30</label>
<br/>
<br/>
<input type=button value="Acumular" onclick="ejemplo()"/>
<br/>
<p>Valor acumulado <div id="valor"></div></p>
2
ответ дан 03.12.2019, 17:35
  • 1
    В самом деле, в которое я делаю его each, он в таблицу:... html + = ' < tr class =" claseEjempo" я восхожу =" ' +datoAcumular +' " > ' + ' < td> ' +valorEjemplo +' < / td> ' + ' < td> ' +valorEjemplo2 +' < / td> ' +... ' < / tr> ' Хэй má s có я говорю, но он, где я получаю стоимость. –  21.01.2017, 07:17
  • 2
    Ok, ты рывок из-за row..., чтобы доставать todal из-за каждого row... правда??? –  21.01.2017, 07:19
  • 3
    Así он, - ua таблица и я существую ahí cuestió n..., если производятся три < tr> тогда он показывает мне ú ltimo стоимость три раза. –  21.01.2017, 07:21
  • 4
    Если он состоит в том, что ты не повторяешь хорошо твои eachs, ты нуждаешься в том, чтобы уйти из-за tr, сначала пробежать строки и из-за каждого rengló n схватывать класс, который ты хочешь сложить, он проверяет пример и я иду обновлять мой ответ, чтобы помещать тебе пример таблицы в начало. Привет –  21.01.2017, 07:37
  • 5
    Я нуждаюсь в признаке, который я тяну в tr, которые в é ste случай - " dato" –  21.01.2017, 08:36