создание динамических массивов Javascript - PullRequest
2 голосов
/ 21 октября 2009

Здравствуйте, я хочу создать массив в Java-сценарии с 2 для циклов

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, он просто дает первому элементу какую-либо идею?

Ответы [ 4 ]

8 голосов
/ 21 октября 2009

Вы перезаписывает 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 голосов
/ 21 октября 2009

Создайте новый массив и перенесите выбранные значения в новый массив.

Подробное описание функций массива

Управление массивами JavaScript

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 );
                }        
        }

}
0 голосов
/ 21 октября 2009

В этой строке вы каждый раз создаете новый массив:

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);
                }        
        }

}
0 голосов
/ 21 октября 2009

Заявление

document.getElementsByName('qm[7]')

не будет работать. Нет элементов, которые могут иметь имя qm[7]. Вы имели в виду, что это ваш массив? В этом случае удалите кавычки, инициализируйте массив до этих операторов и заполните его именами элементов, которые вы хотите выбрать.

Функция getElementsByName возвращает массив элементов. Чтобы использовать этот массив, вам нужно выбрать элементы в нем. I.e.:

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

вы делаете это правильно в своих циклах.

Обновление: расширенный раздел и добавлено объяснение getElementsByTagName

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...