使用Javascript动态添加文本框的值

时间:2015-02-09 14:49:13

标签: javascript arrays dynamic textbox add

我期望在点击按钮时获得总和,但没有任何反应。但这是我想要使用的代码的简化版本。实际上正在使用php从数据库中查询文本框的值。请F1。这是完整的代码。

<html>
<head>
</head>
<body>
<h1> JavaScript </h1>
<script type="text/javascript">
// Addint an array of values from a text box
function calc(){
    var mutli_Credit = document.course_reg.elements['Credit[]'];
    var sum = 0, i = 0, len = mutli_Credit.length;
    for(i < len; ++i){
    sum += parseInt(document.getElementById('Credit[i]).value, 10); 
    // Use parseFloat if you're dealing with floating point numbers.
    }
    //alert(sum);   
    document.getElementById('credit_load').value = sum;
    };

</script>
<form name='course_reg' onLoad=''>
MATH101 <input type='text' name='Credit[]'  value='3' id='Credit[]' size='3' readonly /><br/>
CSC201 <input type='text' name='Credit[]'  value='2' id='Credit[]' size='3' readonly /><br/>
EDU301 <input type='text' name='Credit[]'  value='2' id='Credit[]' size='3' readonly /><br/>
<BUTTON onClick='calc()'> CALCULATE </BUTTON>
Total Credit Load:<input type='text' value='' id='credit_load' name='credit_load' size='3'  readonly/></p>

</form>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

问题1 - 您需要在for循环中初始化计数器变量。

for(i = 0; i < len; ++i){

问题2 - 你试图使用它的索引获取元素的方式不正确,你应该使用你在顶部抓取的元素数组。

sum += parseInt(mutli_Credit[i].value, 10); 

问题3 - 您没有从函数返回任何内容,因此页面会刷新。

function calc(){
    ....
    return false;
};

<BUTTON onClick='return calc()'> CALCULATE </BUTTON>

删除重复的ID。

答案 1 :(得分:0)

您的代码充满了错误。我修好了你用作基础

为要求求和的所有输入元素添加一个类,不要对不同的元素使用相同的ID,并将类添加到要求求和的所有输入中;

MATH101 <input type='text' name='Credit0'  value='3' id='Credit0' class="sumInput" size='3' readonly /><br/>
CSC201 <input type='text' name='Credit1'  value='2' id='Credit1' class="sumInput" size='3' readonly /><br/>
EDU301 <input type='text' name='Credit2'  value='2' id='Credit2' class="sumInput" size='3' readonly /><br/>

检索所有输入元素

var mutli_Credit = document.getElementsByTagName("input");

通过初始化变量

修复您的for语句
for(var i = 0; i < len; ++i){

检查元素是否具有您提供的ID

if(mutli_Credit[i].className === "sumInput")

求和元素

sum += parseInt(mutli_Credit[i].value);

这是固定代码:

// Addint an array of values from a text box 
function calc(){
    var mutli_Credit = document.getElementsByTagName("input");
    var sum = 0, i = 0, len = mutli_Credit.length;
    for(var i = 0; i < len; ++i){
      if(mutli_Credit[i].className === "sumInput") {
        sum += parseInt(mutli_Credit[i].value);
      }
    }
    document.getElementById('credit_load').value = sum;
};

...

MATH101 <input type='text' name='Credit0'  value='3' id='Credit0' class="sumInput" size='3' readonly /><br/>
CSC201 <input type='text' name='Credit1'  value='2' id='Credit1' class="sumInput" size='3' readonly /><br/>
EDU301 <input type='text' name='Credit2'  value='2' id='Credit2' class="sumInput" size='3' readonly /><br/>
<BUTTON onClick='calc()'> CALCULATE </BUTTON>
Total Credit Load:<input type='text' value='' id='credit_load' name='credit_load' size='3'  readonly/></p>