При использовании .each()
следите за тем, чтобы не делать это более. Кроме того, для этого использования полезно передать индекс и элемент или использовать this
.
Рассмотрим следующий пример:
$(function() {
$("input#alldata").keyup(function(e) {
var share = parseFloat($(this).val());
$('tr.itemrow').each(function(i, el) {
var val = share * parseFloat($(".price1", el).html());
$(".result", el).html(val.toFixed(2));
});
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class="share_amount" id="alldata">
<table class="table table-borderless table-striped table-earning">
<thead>
<tr>
<th>User</th>
<th>Amount</th>
<th>Share</th>
<th>Result</th>
</tr>
</thead>
<tbody>
<tr class="itemrow">
<td>
Name 1
</td>
<td class="price1">
1.50
</td>
<td>
Share 1
</td>
<td class="result"></td>
</tr>
<tr class="itemrow">
<td>
Name 2
</td>
<td class="price1">
2.75
</td>
<td>
Share 2
</td>
<td class="result"></td>
</tr>
<tr class="itemrow">
<td>
Name 3
</td>
<td class="price1">
4.00
</td>
<td>
Share 3
</td>
<td class="result"></td>
</tr>
</tbody>
</table>
Значением текстового поля будет тип String. Было неясно, собирался ли пользователь вводить целое число или значение с плавающей запятой, но, поскольку мы работаем с ценами, я подумал, что это может быть либо. Я использовал parseFloat()
для преобразования значения, введенного в число с плавающей точкой.
В просмотре .each()
я могу выбрать только элементы определенного класса, используя $ ("select", element) style selection. Similar to
$ (element) .find () `. На мой взгляд, разницы нет, просто меньше кода.
Считайте цену из таблицы и конвертируйте ее в другое значение Float. Вычислите желаемое значение и поместите его в столбец результата для этой строки. Я использую .toFixed()
, чтобы помочь округлить или отобразить значение с плавающей запятой (если валюта).
Надеюсь, это поможет.