Задать вопрос
mrusklon
@mrusklon
Не получается? Яростно гугли!

Как выбрать все первые элементы td и сплюсовать их значение?

Есть собственно табличка

<table class="table table-bordered">
	  <thead>
		<tr>
		  <th> asfdsdfsdf </th>
		  <th> asfdsdfsdf </th>
		  <th> asfdsdfsdf </th>
		</tr>
	  </thead>
	  <tbody>
		<tr>
		  <td class="player1"><input type="number" placeholder="какое то число" value="" id="p1"> </td>
		  <td> Otto </td>
		  <td> @mdo </td>
		  <td>24443</td>
		</tr>
		<tr>
		  <td class="player1"><input type="number" placeholder="какое то число" value="" id="p1"> </td>
		  <td> Thornton </td>
		  <td> @fat </td>
		  <td>24443</td>
		</tr>
		<tr>
		  <td class="player1"><input type="number" placeholder="какое то число" value="" id="p1"> </td>
		  <td> the Bird </td>
		  <td> @twitter </td>
		  <td>24443</td>
		</tr>
	  </tbody>
</table>

мне надо приплюсовать все значения по колонкам , через js можно выбрать элемент по класс>input>value ? Если пишу бред поправьте :)
по сути мне надо значение в каждом первом td посчитать
  • Вопрос задан
  • 311 просмотров
Подписаться 2 Оценить 2 комментария
Решения вопроса 2
var sum = Array.prototype.reduce.call(
	document.querySelectorAll('.player1 input[type="number"]'), 
  function(sum, item) {
    return sum + +item.value;
}, 0);

Живой пример
Ответ написан
abyrkov
@abyrkov
JavaScripter
Самым простым решением будет
// Native JS
var elements = document.getElementsByTagName('input');
      allValuesAsString = "";
      allValuesAsNumber = 0;
for(var counter = 0; counter < elements.length; counter++){
     allValuesAsString += elements[counter].value;
     allValuesAsNumber += parseInt(elements[counter]);
};
// jQuery
var elements = $('input');
      allValuesAsString = "";
      allValuesAsNumber = 0;
elements.each(function(){
      allValuesAsString += this.value;
      allValuesAsNumber += parseInt(this.value);
};

Но этот вариант подходит, только если у вас нет других инпутов.
// jQuery
var allValuesAsString = "";
      allValuesAsNumber = 0;
$('.player1 input').each(function(){
      allValuesAsString += this.value;
      allValuesAsNumber += parseInt(this.value);
});

Вот более хороший вариант(на Native JS другой человек уже написал).
Отмечу важную фишку моего кода: он читает даже не типизированые для чисел инпуты(т.е. он будет прибавлять число, которое он смог выделить)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы