我正在开发一个需要构建表单的项目。表单有一个函数,用于汇总列和行。我严格使用HTML和JavaScript。我无法获得两次调用的JavaScript函数,一次用于行,一次用于列(我实际上将调用它3次,因为我还需要执行部分总计)。我已经为需要求和的列控件创建了不同的类,并为需要求和的行控件创建了一个不同的类,因此输入控件中有两个不同的类。我也相信它可以在for循环中,因为我对它进行了评论并使用了一个警告声明,它似乎完美无缺。请参阅以下代码:
JavaScript的:
<script type="text/JavaScript">
function CalcSum(displayIn, calcClass){
var sum = 0;
var displayCell = displayIn;
className = calcClass;
var divs = document.getElementsByClassName(className);
var args = [];
for (var i = 0; i <=divs.length; i++){
args.push(divs[i].value);
val = divs[i].value;
sum += val*1;
document.getElementById(displayCell).value = sum;
dollarAmount("Form1", displayCell);
}
}
HTML控件:
<input type="text" name="ctl_001" value="" id="ctl_001" class="col4txrev col4" onchange="CalcSum('T1_TOT_C4_TXREV','col4txrev');CalcSum('T1_TOT_C4','col4');" style= "width: 100%">
答案 0 :(得分:1)
根据我对您的问题的理解,您的脚本在技术上和功能上都有多处错误。
我已经纠正了错误,可以看到控制台在调用时打印日志两次。
注意:无论如何,请勿从内联属性调用该函数两次。创建另一个将执行相同操作并从git checkout
事件(或)以编程方式创建onchange
侦听器的函数。
onchange
和
不是i < divs.length
i <= divs.length
内的文字,它应为div
,如下所示
而不是innerHTML
。 value
可用于表单输入元素
最终用户可以更改哪些值。value
,应将该值转换为数字
自sum
之后使用parseInt
或parseFloat
元素通常是文本。text/value
的最终值分配给另一个sum
元素并调用另一种方法,它应该在div
之外
环。但是如果你真的需要这个来设置/调用每个循环,那么它
可以在for
循环内。
for
function CalcSum(displayIn, calcClass){
var sum = 0;
var displayCell = displayIn;
var className = calcClass;
console.log('called');
var divs = document.getElementsByClassName(className);
var args = [];
for (var i = 0; i < divs.length; i++){
//args.push(divs[i].value);
var val = divs[i].innerHTML;
args.push(val);
sum += parseInt(val) * 1; // It can be parseFloat
}
document.getElementById(displayCell).value = sum;
dollarAmount("Form1", displayCell);
}
// dummy function
function dollarAmount(form, elm){
}