关于数组形式的表单计算,请高手帮我转成多行可计算的表单!

webdevelop 2005-06-17 11:15:40

<script language="javascript">

function res(obj){
obj.result[1].value=eval(obj.afield[1].value)+eval(obj.bfield[1].value)+eval(obj.cfield[1].value)+eval(obj.dfield[1].value)+eval(obj.efield[1].value)
}

</script>

<form action="cgi.exe" method="get">

<input type="text" name="afield[1]" value="0" size="8" onchange="res(this.form)">
<input type="text" name="bfield[1]" value="0" size="8" onchange="res(this.form)">
<input type="text" name="cfield[1]" value="0" size="8" onchange="res(this.form)">
<input type="text" name="dfield[1]" value="0" size="8" onchange="res(this.form)">
<input type="text" name="efield[1]" value="0" size="8" onchange="res(this.form)">
<input type="text" name="result[1]" DISABLED size="8">

</form>
...全文
148 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
webdevelop 2005-06-20
  • 打赏
  • 举报
回复
现在程序没有错误,但现在只有一行,如果有两行或两行以上怎么计算?
meizz 2005-06-20
  • 打赏
  • 举报
回复
首先你的 name 命名就不太遵守规范, 你这个命名与数组下标会产生岐义.
阿信的写法是正确的, 用document.formName.elements[inputName]; 这种方式调用到这个控件就不会有岐义错误了
TechnoFantasy 2005-06-20
  • 打赏
  • 举报
回复
又修改了一下,刚才的加是实现的字符串相加,现在改成了数字相加:


<script language="javascript">


function calAdd(a1, a2){
return Number(a1) + Number(a2);
}

function res(obj, index){
var sRes;
var sEle1;
var sEle2;
var sVal;

sRes = "document.calForm.elements['cresult[" + index + "]'].value";
sEle1 = "document.calForm.elements['afield[" + index + "]'].value";
sEle2 = "document.calForm.elements['bfield[" + index + "]'].value";

eval(sRes + "=calAdd(" + sEle1 + ", " + sEle2 + ")");
//eval(sRes + "=" + sVal);
}


</script>

<form action="cgi.exe" method="get" name = "calForm">

<input type="text" name="afield[1]" value="0" size="8" onchange="res(this.calForm, 1)">
<input type="text" name="bfield[1]" value="0" size="8" onchange="res(this.calForm, 1)">
<input type="text" name="cresult[1]" DISABLED size="8">
<br>
<input type="text" name="afield[2]" value="0" size="8" onchange="res(this.calForm, 2)">
<input type="text" name="bfield[2]" value="0" size="8" onchange="res(this.calForm, 2)">
<input type="text" name="cresult[2]" DISABLED size="8">
</form>
TechnoFantasy 2005-06-20
  • 打赏
  • 举报
回复
修改了一下,可以支持多行的计算:

<script language="javascript">

function res(obj, index){
var sRes;
var sEle1;
var sEle2;
var sVal;

sRes = "document.calForm.elements['cresult[" + index + "]'].value";
sEle1 = "document.calForm.elements['afield[" + index + "]'].value";
sEle2 = "document.calForm.elements['bfield[" + index + "]'].value";

sVal = eval(sEle1 + "+" + sEle2);
eval(sRes + "=" + sVal);
}

</script>

<form action="cgi.exe" method="get" name = "calForm">

<input type="text" name="afield[1]" value="0" size="8" onchange="res(this.calForm, 1)">
<input type="text" name="bfield[1]" value="0" size="8" onchange="res(this.calForm, 1)">
<input type="text" name="cresult[1]" DISABLED size="8">
<br>
<input type="text" name="afield[2]" value="0" size="8" onchange="res(this.calForm, 2)">
<input type="text" name="bfield[2]" value="0" size="8" onchange="res(this.calForm, 2)">
<input type="text" name="cresult[2]" DISABLED size="8">
</form>
webdevelop 2005-06-20
  • 打赏
  • 举报
回复
UP
aniude 2005-06-20
  • 打赏
  • 举报
回复
这个只能根据你所需要的计算进行定义吧 :)
webdevelop 2005-06-20
  • 打赏
  • 举报
回复
怎么啊,怎么办?
webdevelop 2005-06-19
  • 打赏
  • 举报
回复
现在提供的只是单行可计算,如果有2行,或2行以上呢?
webdevelop 2005-06-19
  • 打赏
  • 举报
回复
但是我如果有result[2],result[3],result[4]...

<input type="text" name="afield[1]" value="0" size="8" onchange="res(this.form)">
<input type="text" name="afield[2]" value="0" size="8" onchange="res(this.form)">
<input type="text" name="afield[3]" value="0" size="8" onchange="res(this.form)">
...
aniude 2005-06-19
  • 打赏
  • 举报
回复
不太明白楼主的意思 :(
majiming 2005-06-18
  • 打赏
  • 举报
回复
你现在的不已经可以计算了吗
TechnoFantasy 2005-06-18
  • 打赏
  • 举报
回复
<script language="javascript">

function res(obj){
obj.result.value=eval(obj.afield.value)+eval(obj.bfield.value)+eval(obj.cfield.value)+eval(obj.dfield.value)+eval(obj.efield.value)
}

</script>

<form action="cgi.exe" method="get" name = "calForm">

<input type="text" name="afield" value="0" size="8" onchange="res(calForm)">
<input type="text" name="bfield" value="0" size="8" onchange="res(calForm)">
<input type="text" name="cfield" value="0" size="8" onchange="res(calForm)">
<input type="text" name="dfield" value="0" size="8" onchange="res(calForm)">
<input type="text" name="efield" value="0" size="8" onchange="res(calForm)">
<input type="text" name="result" DISABLED size="8">

</form>

是这样吗?在前面的文本框里面输数字,在最后一个文本框显示相加结果。
fason 2005-06-18
  • 打赏
  • 举报
回复
正确的方法应该是这样
假设<form name="frm">

var el = document.frm.elements["result[1]"];
el.value = "***"

用document.formName.elements[inputName]
YOLOv11人物目标检测数据集 目标类别:['Persona'] 中文类别:['人物'] 训练集:1683 张 验证集:182 张 测试集:0 张 总计:1865 张 该数据集提供了data.yaml文件,内容如下: train: ../train/images val: ../valid/images test: ../test/images nc: 1 names: ['Persona'] YOLOv11城市街头与室内场景人物目标检测数据集 该数据集涵盖了城市街头、商业街区、办公场所及室内生活等多种场景中的人物目标检测,具有广泛的应用价值。通过多样的场景设置和丰富的拍摄角度,能够有效提升模型在复杂环境下的目标识别能力,为智慧城市、安防监控及人机交互等领域提供高质量的训练数据支持。 从数据分布来看,该数据集包含1683张训练集图像、182张验证集图像以及0张测试集图像,整体比例分配合理。训练集与验证集的比例约为9.25:1,能够充分满足模型训练与性能评估的需求,确保模型在不同场景下的泛化能力得到充分验证。 该数据集的标注工作严谨规范,所有图像均经过人工精确标注,每个目标都配有清晰的边界框和统一的标签“Persona”。标注过程遵循严格的标准,确保了数据的高质量和一致性,为后续的模型训练和性能优化提供了可靠的基础。 基于其多样化的场景覆盖和高质量的标注数据,该数据集可广泛应用于智慧城市管理、公共场所安防监控、智能零售分析以及家庭安防等多个领域。特别是在需要精准识别复杂环境中人物的目标检测任务中,该数据集能够显著提升模型的准确性和鲁棒性。

87,988

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧