你好我想在2 for for循环中用javascript创建一个数组
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);
}
}
}
如果我返回byteArray,它只给出了第一个元素吗?
答案 0 :(得分:8)
每次找到一个已检查的元素时,你都会覆盖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);
}
}
}
答案 1 :(得分: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 );
}
}
}
答案 2 :(得分:0)
声明
document.getElementsByName('qm[7]')
不起作用。没有可以具有名称qm[7]
的元素。你的意思是你的阵列吗?在这种情况下,删除引号,在这些语句之前初始化数组,并用您要选择的元素的名称填充它。
函数getElementsByName
返回一个元素数组。要使用此数组,您需要选择其中的项目。即:
var elems = document.getElementsByName("body");
var myBody = elems[0];
你在for循环中正确地做到了。
更新:展开的部分,并在getElementsByTagName上添加说明
答案 3 :(得分:0)
在此行中,您每次都会创建一个新数组:
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);
}
}
}