0

質問が明確ではなかったので、以下のように更新しました。

私はCSVファイルをサーバーにアップロードしています.csvを解析してAmount列の値を取得し、テキストボックスと金額を含むhtmlを準備します。生成されたこの html は javascript に渡され、値を持つテキスト ボックスを含む完全な html が出力されます。

ajax 呼び出しを介して html を返すサーバー コード:

foreach($amounts as $val){ 
    $html .+ '<input type="text" class="inputText" value="'.$val['amount'].'"/>';
}
echo $html;

HTMLを出力するJqueryコード(generateHtml()関数内):

$('#amtblock').html(html);

結果のhtml:

<div id="amtblock">
    <input type="text" class="inputText" value="3"/>
<input type="text" class="inputText" value="78"/>
<input type="text" class="inputText" value="12"/>
<input type="text" class="inputText" value="21"/>
<input type="text" class="inputText" value="89"/>
<input type="text" class="inputText" value="22"/>
<input type="text" class="inputText" value="222"/>
</div>

今、このコードですべてのテキストボックスの値を取得しようとすると(calculateAmount()関数内):

$('.inputText').each(function() {
    total += Number($(this).val());     
});

total上記のコードでは出力されません。合計を計算して表示したい。動的に作成した要素の値を取得および設定するにはどうすればよいですか?

4

2 に答える 2

1

AJAX 呼び出しで要素を作成するときは、非同期で作成されることに注意してください。つまり、AJAX 呼び出しの後に起動された関数は、AJAX 呼び出しが完了する前に起動されます。

AJAX 呼び出しから作成された DOM 要素を考慮するには、呼び出しが完了するまで待つ必要があります。

あなたの場合、calculateAmount()入力が作成された後に関数が起動されることを確認する必要があります。calculateAmount()これを行うには、 のgenerateHtml()後に関数を入れ$('#amtblock').html(html);ます。

于 2013-05-09T11:00:06.950 に答える
0

編集してすみません、まだすべてのコードを見ていませんでした。これでうまくいくはずです

total=0;
$(document).ready(function(){
  total=0;
  $('.inputText').each(function() {
      val_to_add=$(this).val() || 0
      total += parseInt(val_to_add);     
      console.log(total);
   });
});

jsfiddle で試してみてください: http://jsfiddle.net/Ugwx5/2/

于 2013-05-09T10:11:06.283 に答える