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 回答