2009-05-28 43 views
0

我有大约20个复选框。当用户选择这些,然后使用替代提交按钮时,我需要更改所选输入的名称/值对的名称。如何更改多个选定html值的名称?

这个功能为什么只改变的名字隔开选中的输入?

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

我们可以看到您使用的HTML? – 2009-05-28 00:53:16

回答

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

如果您提供了对您的场景的更详细的描述,但是我希望我的回答有用,那将会很棒。

​​

我通常用这种方式管理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(); 
    } 
+0

谢谢,我更改了代码以使用getElementsByName函数,因此我不必为下面的长度未定义问题添加额外的逻辑。 – 2009-05-28 21:44:35

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 

} 
+0

我说我不知道​​JavaScript :)我没有预料到长度变得不确定。我仍然喜欢用一段时间,而不是在循环内减少我,这似乎更清楚。你可以使用我的代码,但改变循环条件退出长度未定义,然后捕获最后一个?在循环中捕捉它会很高兴,但我可能会有点宝贵。 – 2009-05-29 01:31:37