2016-06-14 25 views
0

我目前工作的页面是在线发布者的仪表板。它的工作方式是使用foreach循环为每篇文章创建一个编辑器表单的实例。我想要做的是将复选框添加到每个可以将值添加到页面底部的小计的实例。如果输出包含在同一个表单中,我只能让它工作。Javascript:使用多种形式返回单个输出

所以我的问题实际上是:有没有办法使用来自多个表单的输入并返回单个输出?

为每个实例简化PHP代码:

foreach ($Articles as $idx => $Article){ 
    echo <form action='/gatekeeper.php' method='POST' target='_SAVE{$Article["ID"]}' onchange='submit()'> 
    echo <input type="checkbox" onClick="checkTotal()" /> 
} 

这里是JavaScript代码。

function checkTotal() { 
document.listForm.total.value = ''; 
var sum = 0; 
for (i=0;i<document.listForm.choice.length;i++) { 
    if (document.listForm.choice[i].checked) { 
    sum = sum + parseInt(document.listForm.choice[i].value); 
    } 
} 
document.listForm.total.value = sum; 

}

+2

“getElementsByName” - 在上述多个元件。几个元素没有一个'.value' ... –

+0

我觉得你把'getElementsByName'和'getElementById'混淆了。 'document.getElementsByName(“inches”)'返回与'document.articleAdd.inches'相同的复选框列表。 – Barmar

+0

我想我没有得到你想要做的,但无论如何,这里有一些错误来解决你的问题。 'document.getElementsByName(“inches”).value'是未定义的。如果你想获得数组,那么只需执行'document.getElementsByName(“inches”)''。如果你想设置'document.articleAdd.inches.value',那么你必须做'document.articleAdd [“inches”] = inches;'。多数民众赞成你也是如何访问输入名称英寸in for循环:'for(i = 0; i KRONWALLED

回答

0

试试这个

function addToTotal(){ 
var sum = 0; 
var inches = document.articleAdd.inches.attributes['value'].value; 
document.articleAdd.inches.value = inches; 
for (i=0;i<document.articleAdd.inches.length;i++) { 
    if (document.articleAdd.inches[i].checked) { 
    sum = sum + parseInt(document.articleAdd.inches[i].value); 
    } 
} 
document.articleAdd.inches.value = sum; 
}