我有大约20个复选框。当用户选择这些然后使用备用提交按钮时,我需要更改所选输入的名称/值对的名称。
为什么此功能仅更改所有其他所选输入的名称?
function sub_d()
{
for (i = 0; i < document.checks.OGname.length; i++) //for all check boxes
{
if (document.checks.OGname[i].checked == true)
{
document.checks.OGname[i].name="newname"; //change name of input
}
}
document.checks.submit();
}
输出:
newname
'105'
OGname
'106'
newname
'107'
OGname
'108'
newname
'109'
OGname
'110'
答案 0 :(得分:1)
通过重命名列表的第一个元素,您将列表的长度减少了一个并删除了第一个元素。下一次循环时,前一个第二个元素现在是第一个元素,第二个元素是旧的第三个元素。
我不是javascript专家,但是这可能有用。
function sub_d()
{
i=0;
while (document.checks.OGname.length > i)
{
if (document.checks.OGname[i].checked="true")
{
document.checks.OGname[i].name="newname";
}else{
i++;
}
}
document.checks.submit();
}
正如我所说,没有保证或担保。
答案 1 :(得分:1)
如果您提供有关您的方案的更详细说明,那会很棒,但我希望我的答案有用。
function sub_d()
{
for (i = 0; i < document.checks.OGname.length; i++) //for all check boxes
{
if (document.checks.OGname[i].type == 'CHECKBOX')
if (document.checks.OGname[i].checked)
{
document.checks.OGname[i].name="newname"; //change name of input
}
}
document.checks.submit();
}
我通常以这种方式管理dom集合:(我不知道是否是最好的方式)
function sub_d()
{
var theInputs = document.checks.getElementsByTagName('input');
for (var i = 0; i < theInputs.length; i++)
{
if (theInputs[i].type == 'CHECKBOX')
if (theInputs[i].checked)
{
theInputs[i].name="newname";
}
}
document.checks.submit();
}
答案 2 :(得分:0)
随着你的帮助我想出了这个,似乎运作良好。让我知道是否可以改善其他人使用......
function sub_d()
{
for (i = 0; i < document.checks.OGname.length; i++) //for all check boxes
{
if (document.checks.OGname[i].checked == true)
{
document.checks.OGname[i].name="newname"; //change name of input data so we know it is for other function
//By renaming the first element of the list, we have reduced the length of the list by one
//and deleted the first element. This is why we need to keep i at it's current position after a name change.
i=i-1;
}
}
//When there is only one check box left it's propert length becomes undefined.
//We will need this statement for the last undefined check box not covered in the for loop
//We can no longer index user[0]
document.checks.OGname.name="newname";
document.checks.submit();//submit these checked values to the .exe
}