将表单字段(... name =" array1 []")传递给Javascript函数并更改其他表单字段的值(... name =" array2 []")

时间:2014-07-15 13:59:39

标签: javascript arrays forms

我有以下文件(下面列出),将“金额1”乘以2(am1 * 2),并将“金额2”中的值更改为结果(由JavaScript执行)。

然后,同一表单可以向表单添加字段(金额1和金额2)。

我希望在其他“已添加”字段中具有相同的功能(按“数量1”乘以2并更改“金额2”的值)。

<html>
<head>
<script>
var ct = 1;
function new_combi(){
          ct++;
          var div1 = document.createElement('div');
          div1.id = ct;
          // link to delete extended form elements
          var delLink = '<div style="text-align:right;margin-right:65px"><a href="javascript:delIt('+ ct +')">Del</a></div>';
          div1.innerHTML = document.getElementById('amount').innerHTML + delLink;
          document.getElementById('combine').appendChild(div1);
}
// function to delete the newly added set of elements
function delIt(eleId){
          d = document;
          var ele = d.getElementById(eleId);
          var parentEle = d.getElementById('combine');
          parentEle.removeChild(ele);
}

function calculate(){   
          am1 = document.form1["am1[]"].value;
          total = am1*2;
          document.form1["am2[]"].value = total;
}
</script>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<div id="combine">
<div>
  <table>
    <tr>
      <td width="25%" valign="top">Amount 1</td>
      <td valign="top"><input type="text" name="am1[]" onchange="calculate()"/></td>
    </tr>
    <tr>
      <td valign="top">Amount 2</td>
      <td valign="top"><input type="text" name="am2[]" /></td>
    </tr>
  </table>
</div>
</div>
<p id="addnew">
          <a href="javascript:new_combi()">Add Combination</a>
</p>
</form>
<!-- Template to add-->
<div id="amount" style="display:none">
<div>
  <table>
    <tr>
      <td width="25%" valign="top">Amount 1</td>
      <td valign="top"><input type="text" name="am1[]" onchange="calculate()"/></td>
    </tr>
    <tr>
      <td valign="top">Amount 2</td>
      <td valign="top"><input type="text" name="am2[]" /></td>
    </tr>
  </table>
</div>
</div>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

我为你尝试了一些东西。希望这会奏效。

我刚给id=1 div div#combine内的<div id="1"> 属性。

function calculate(){
  for (var i = 1; i <= ct; i++) {
    var currentDiv = document.getElementById(i);
    var am1 = currentDiv.getElementsByTagName('input')[0].value;
    var total = am1 * 2;
    currentDiv.getElementsByTagName('input')[1].value = total;
  };
}

我改变了你的计算功能。

{{1}}

如果有任何问题,请尝试告诉我,因为我改变了您的实施逻辑。