如何遍历多个下拉列表并访问其选项值

时间:2010-02-22 23:44:47

标签: javascript drop-down-menu html-table

我正在编写基本GPA计算器的代码。基本上,它是一个3列表,两个课程名称/学分的文本区域和一个包含字母等级(A +,C,B-)的下拉列表及其对应的点值作为选项值,像这样

<td><select name="letterGrades">
<option value="0.7">A+</option>>
<option value="1.3">A-</option>>
<option value="2.7">C+</option>
</option>
</select>
</td>

我需要遍历行,获取每个课程的选项值或“成绩”。

var table = document.getElementById(tableID);

for(var i=0; i<rowCount; i++) {

 grade = table.rows[i].cells[2].options[letterGrades.selectedIndex].id; //is this allowed?
 credits = parseFloat(table.rows[i].cells[1].value);
 totalHours += parseFloat(table.rows[i].cells[1].value);  
 perCourse += grade*credits

 } 

totalGPA = perCourse/totalHours;

我意识到还有其他方法可以将字母分配给它们的点值(数组?)但我仍然不知道如何遍历下拉列表并获取它们的选项值。

2 个答案:

答案 0 :(得分:3)

首先转到<select>项目。如果可以,我建议您使用document.getElementsByTagName('select')获取网页上所有<select>代码的列表。然后,使用每个<select>标记,调用theSelectTag.getElementsByTagName('option')(其中theSelectTag是返回节点列表中的对象)。然后,您可以通过value属性(ya rly)访问其值,并通过textContent属性访问其标签。

getElementsByTagName会返回NodeList个对象,但您几乎可以将其视为Array

答案 1 :(得分:0)

由于zneak的回答,我终于完成了一切工作。这是怎么回事。

var select = document.getElementsByTagName('select');
var options = document.getElementsByTagName('option');
var textarea = document.getElementsByTagName('textarea');

for(var i=1; i<rowCount; i++) {  //i=1, starts at the second row, assuming you have a header
    var grades = select[i].options[select[i].options.selectedIndex].value; //gets the selected item for each select tag from the dropdownlist
    credits = parseFloat(textarea[i].value); //same goes for textareas
    totalHours += parseFloat(textarea[i].value);            
    perCourse += grades*credits;    
}       
totalGPA = perCourse/totalHours;