私はこの問題を数時間にわたって苦労しています。他の投稿でもこの問題は見つかりませんでしたが(.each()
メソッドに関連するものが多数見つかりましたが).each()が適切に反復しない
は、とにかくここに私は:
これは私が何時に反復するHTMLです:
<input type="text" id="investment" /><br />
<table id="fundTable">
<tr>
<td class="rentability"> <span class="someClass"> 0.12 </span> </td>
<td class="absoluteResult"></td>
</tr>
<tr>
<td class="rentability"> <span class="someClass"> 0.24 </span> </td>
<td class="absoluteResult"></td>
</tr>
<tr>
...
</table>
考え方は次のとおりです。ユーザーは、TextField #investment
に値を入力します。 onChange
の場合、ユーザー入力に.rentability
値を掛けて、.absoluteResult
テーブルの列にJQueryが入力されます。ここ
を次にjQueryの部分である:
$('#investment').change(function() {
var investment = $('#investment').val(),
currentlyDisplayedRentability,
updatedAbsoluteResult
$('#fundTable tr').each(function(index, tableRow) {
currentlyDisplayedRentability = $(tableRow + "span").html()
currentlyDisplayedRentability = parseFloat(currentlyDisplayedRentability)
updatedAbsoluteResult = currentlyDisplayedRentability * investment
$(tableRow + "td[class=absoluteResult]").html(updatedAbsoluteResult)
})
})
何が起こると、すべての行が.absoluteResult
.rentability
カラムの最初の行の値を使用して装着されていることです。 すべての累積に1つの値しか使用されません。 1つの列(.absoluteResult
)で正しく.each()
が反復処理されていて、他の列(.rentability
)には正しくないかのようです。
なぜか分かりません。
をチェックするためのフィドルですあなたのコードで '#fundTable ' $( '#fundTable tr')each(...); ' – Smamatti
' tableRow'変数は文字列ではなく、現在の要素です。おそらく$( "span"、tableRow)、または$(tableRow).find( "span")を意味していました。 – biziclop
@biziclopが正しいです。ここで起こったのは、十分な分割と征服のデバッグを実行していないということです。実際に、複雑なコードに依存してテストするためには、それぞれが適切に反復していないという結論に至りました繰り返し。そのコードで何か問題があれば、テスト全体が中断します。その代わりに、問題の原因として反復の問題を除外するために、 '.each'の内部にある現在のオブジェクトに関する情報を' console.log'する必要があります。 –