Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery:从异步创建的文本框中获取值?_Javascript_Jquery - Fatal编程技术网

Javascript Jquery:从异步创建的文本框中获取值?

Javascript Jquery:从异步创建的文本框中获取值?,javascript,jquery,Javascript,Jquery,好的,因为问题不清楚,我更新如下: 我正在上传一个CSV文件到服务器,它解析CSV并获取Amount列的值,然后准备一个包含带有Amount的文本框的html。然后将生成的html传递给javascript,javascript输出包含带有值的文本框的完整html 通过ajax调用返回html的服务器代码: foreach($amounts as $val){ $html .+ '<input type="text" class="inputText" value="'.$val

好的,因为问题不清楚,我更新如下:

我正在上传一个CSV文件到服务器,它解析CSV并获取Amount列的值,然后准备一个包含带有Amount的文本框的html。然后将生成的html传递给javascript,javascript输出包含带有值的文本框的完整html

通过ajax调用返回html的服务器代码:

foreach($amounts as $val){ 
    $html .+ '<input type="text" class="inputText" value="'.$val['amount'].'"/>';
}
echo $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>
总计
未以上述代码打印。我想计算总数并显示出来。
如何获取和设置动态创建的元素的值

很抱歉编辑,我还没有看到所有的代码,这应该适合您

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上试试:

当您使用AJAX调用创建元素时,请记住它们是异步创建的。这意味着在AJAX调用之后启动的函数将在AJAX调用完成之前启动

为了考虑从AJAX调用创建的DOM元素,您必须等待调用完成


在您的情况下,需要确保在创建输入后启动
calculateAmount()
函数。您可以通过将
calculateAmount()
放在
generateHtml()
函数的
$('#amtblock').html(html)之后来实现这一点

何时以及如何生成文本框?需要查看更多代码。如果它们“未在DOM中注册”,它们在哪里?您是否试图说它们不是原始html的一部分,但它们是动态添加的?另外,您是否在循环之前声明
total
?如果不是这样,当您试图说
total+=…
(这个问题与所讨论的元素是否是动态添加的无关)时,您的代码将因引用错误而崩溃。@VishwaKumar,可能存在两个问题:(1)您的总计函数出现在html插入函数之前,或者(2)您没有声明
var total=0。我想不出还有什么可能。他为什么要创建一个div?什么是
input
事件?没有什么我只是没有使用console.log我将总数放入一个div中,我将替换最后一行。但是这只将事件应用到的元素的值添加到总数中,如果该事件在同一个元素的一行中发生多次,每个新值都会被添加进去——与OP的代码相比,OP的代码试图循环一次项。我还没有听说过“输入”事件。想不想提供一些文件证明这是可行的?@DerekHenderson-这是真的,但对OP的问题没有帮助。还有,CodeBird,为什么要引入
parseInt()
?它的作用与
Number()
不同(在用户输入的数据上使用
parseInt()
时,确实应该在第二个参数中指定基数)。
$('.inputText').each(function() {
    total += Number($(this).val());     
});
total=0;
$(document).ready(function(){
  total=0;
  $('.inputText').each(function() {
      val_to_add=$(this).val() || 0
      total += parseInt(val_to_add);     
      console.log(total);
   });
});