如何使用javascript迭代ASP .NET文本框并计算一个值?

Nik*_*iya 1 .net javascript asp.net asp.net-ajax

我在转发器中有多个文本框,我将在运行时在这些文本框中输入值.我想要在一个label.i中的那些文本框中输入的所有值的总和.我想使用java脚本来做这件事.所以,请你帮助我.

Jør*_*ode 6

这是一个让你入门的想法:

  1. <div>一下你的身边Repeater,给它一个独特的id.
  2. 使用document.getElementById()JavaScript中的函数来获取对它的引用<div>.
  3. 使用getElementsByTagName()DOM元素中的函数查找其中的所有<input>内容.
  4. 循环遍历它们,将它们的值(解析为整数)一起添加.

所以如果你的标记看起来像这样:

<div id="coolStuff">
    <asp:Repeater ... >
</div>
Run Code Online (Sandbox Code Playgroud)

JavaScript看起来大致如下:

var container = document.getElementById("coolStuff");
var inputs = container.getElementsByTagName("input");

var sum = 0;

for (var i = 0; i < inputs.length; i++) {
    sum += inputs[i].value;
}

alert(sum);
Run Code Online (Sandbox Code Playgroud)

现在,此代码不会检查以确保<input>s实际上是type=text或确认输入的值是数字.这些部分留给读者练习;)


编辑:如果您输出的每个"行"中有多个文本框,Repeater并且您只想对一个"组"框的值求和,则需要稍微更改一下脚本.以下是两种可能的解决方案 - 选择一种:

  1. 如果您确切知道<input>每个"行"中有多少元素,则可以for将客户端脚本中的循环更改为仅访问每个第N个元素.例如.只选择每行中三个字段的最后一个:for (var i = 2; i < inputs.length; i += 3)

  2. 更改标记以class<input>元素上包含属性作为总和的一部分.在for循环内,进行测试inputs[i].className以验证是否要包含特定字段.