我一直在努力争取这一天,我无法理解。我搜索了这个网站,找不到答案,或者我不够聪明,无法从那里的答案中找出答案。这是我想要做的: -
我有一个包含人名和努力的HTML表格。我已经创建了一个唯一的名称列表(在我的选项元素中),所以我想循环遍历表,并为每个名称的出现,将工作添加到数组条目。我最终想要的是一小部分人名和他们花费的全部精力......我希望这是有道理的......
我大约4周前才开始使用JS,所以如果它看起来很难看我很抱歉: -
var memArray=new Array(); //define an empty array.
for(x=1;x<=opt.length-1;x++) { //loop through option element to get names
memArray[x]=[]; // add a second array (inner) to outer array
memArray[x]=opt.options[x].value; //post value to first row of outer array
}
for(y=1;y<=obj.rows.length-2;y++){ //cycle through html table called obj
for(z=1;z<=memArray.length-1;z++) { //for each row in table, cycle through outer array
if(memArray[z]==obj.rows[y].cells[3].innerHTML) { //if the names match......
memArray[z][0]=memArray[z][0]+obj.rows[y].cells[6].innerHTML; //grab the effort from the 6th table cell and add to inner array to get total....
//alert(memArray[z]+' '+obj.rows[y].cells[6].innerHTML);
}
}
}
for(z=1;z<=memArray.length-1;z++) {
alert(memArray[z][0]); //loop through array
}
当我尝试读取第二个数组维度的值时,它会说“未定义” - 但我试图用“memArray [z] [0]将该人的努力总和添加到该数组元素= memArray [Z] [0] + obj.rows [Y] .cells [6] .innerHTML;“
我在JSFiddle
中创建了问题答案 0 :(得分:0)
如果我理解你需要什么 - 我建议你使用一个Object(现在是Array)作为值的哈希值。在这种情况下,你会得到像字典(键值集合)的smth,其中键 - 名称,值 - 任何东西(在你的情况下 - 我认为一个字符串,但也可能是一个数组):
var hash = {};
for(var x = 1; x <= opt.length-1; x++) { //loop through option element to get names
hash[opt.options[x].value] = null; //if you need an array - hash[opt.options[x].value] = [];
}
for(var y = 1; y <= obj.rows.length-2; y++){ //cycle through html table called obj
var name = obj.rows[y].cells[3].innerHTML;
if (hash[name] !== undefined) { //if the given user is inside the hash
hash[name] += obj.rows[y].cells[6].innerHTML;
}
}
for(var name in hash) {
alert(hash[name]);
}
注意: innerHTML
返回一个字符串。因此,如果您需要总结整数值 - 您必须先解析它们。根据值的类型,使用parseInt或parseFloat。
更新:您可能会看到包含一些虚假数据的工作示例(包含解析数字)here。