好的,因为问题不明确我已经更新如下:
我正在将CSV文件上传到服务器,它解析csv并获取Amount列的值,然后准备一个包含金额的文本框的html。然后将生成的html传递给javascript,javascript输出包含值的文本框的完整html。
通过ajax调用返回html的服务器代码:
foreach($amounts as $val){
$html .+ '<input type="text" class="inputText" value="'.$val['amount'].'"/>';
}
echo $html;
输出html(在generateHtml()
函数内部)的Jquery代码:
$('#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
。我想计算总数并显示它。
如何获取和设置我动态创建的元素的值?
答案 0 :(得分:1)
使用AJAX调用创建元素时,请记住它们是异步创建的。这意味着在AJAX调用完成之前将触发在AJAX调用之后触发的函数。
为了考虑从AJAX调用创建的DOM元素,您必须等到调用完成。
在您的情况下,您需要确保在创建输入后触发calculateAmount()
函数。您可以在calculateAmount()
之后将generateHtml()
放在$('#amtblock').html(html);
函数内来完成此操作。
答案 1 :(得分: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/