【问题标题】:creating dynamic Arrays Javascript创建动态数组 Javascript
【发布时间】:2009-10-21 12:52:49
【问题描述】:

您好,我想在 java 脚本中创建一个包含 2 个 for 循环的数组

var i;
    var a;
    var total       = document.getElementsByName('qm[7]')   
    var creativity  = document.getElementsByName('qm[0]');
    var design      = document.getElementsByName('qm[1]');
    var text        = document.getElementsByName('qm[3]');
    var motivation  = document.getElementsByName('qm[5]');
    var depth       = document.getElementsByName('qm[6]');
    var usefulness  = document.getElementsByName('qm[8]');
    var research    = document.getElementsByName('qm[9]');

ratingArray = new Array(total,creativity,design,text,motivation,depth,usefulness,research);

for(i=0; i < ratingArray.length;i++)
{

    for(a=0; a < ratingArray[i].length;a++)
    {
        if(ratingArray[i][a].checked == true)
        {

             rateArray = new Array(ratingArray[i][a].value);
        }    
    }

}

如果我返回 rateArray 它只是给第一个元素任何想法?

【问题讨论】:

  • 脚本正在做你想让它做的事情。你想创造什么?包含所有选中项的一维数组?

标签: javascript arrays loops


【解决方案1】:

每次找到选中的元素时,您都会覆盖 rateArray - 我怀疑您的意思是附加它:

var ratingArray = new Array(total,creativity,design,text,motivation,depth,usefulness,research);
var rateArray = new Array();

for(i=0; i < ratingArray.length;i++)
{

        for(a=0; a < ratingArray[i].length;a++)
        {
                if(ratingArray[i][a].checked == true)
                {

                         rateArray.push(ratingArray[i][a].value);
                }        
        }

}

【讨论】:

    【解决方案2】:

    创建一个新数组并将选定的值推送到新数组。

    数组函数详解

    Manipulating JavaScript Arrays

    var ratingArray = new Array(total,creativity,design,text,motivation,depth,usefulness,research);
    
    var selectedValArray = [];
    
    for(i=0; i < ratingArray.length;i++)
    {
    
            for(a=0; a < ratingArray[i].length;a++)
            {
                    if(ratingArray[i][a].checked == true)
                    {
    
                             selectedValArray.push ( ratingArray[i][a].value );
                    }        
            }
    
    }
    

    【讨论】:

      【解决方案3】:

      声明

      document.getElementsByName('qm[7]')
      

      不会工作。没有可以具有名称qm[7] 的元素。你的意思是这是你的阵列吗?在这种情况下,请删除引号,在这些语句之前初始化数组并用您要选择的元素的名称填充它。

      函数getElementsByName 返回一个元素数组。要使用此数组,您需要选择其中的项目。即:

      var elems = document.getElementsByName("body");
      var myBody = elems[0];
      

      你在你的 for 循环中正确地做到了。

      更新:扩展部分并添加了关于 getElementsByTagName 的说明

      【讨论】:

        【解决方案4】:

        在这一行中,您每次都创建一个新数组:

        rateArray = new Array(ratingArray[i][a].value);
        

        所以你必须将元素推送到数组中,而不是每次都创建一个新元素,这也删除了最后一个版本。

         var rateArray =[]
        
        for(i=0; i < ratingArray.length;i++)
        {
        
                for(a=0; a < ratingArray[i].length;a++)
                {
                        if(ratingArray[i][a].checked)
                        {
        
                                 rateArray.push(ratingArray[i][a].value);
                        }        
                }
        
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-19
          • 2011-03-08
          • 1970-01-01
          • 2020-11-08
          • 1970-01-01
          相关资源
          最近更新 更多