我正在编写基本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;
我意识到还有其他方法可以将字母分配给它们的点值(数组?)但我仍然不知道如何遍历下拉列表并获取它们的选项值。
答案 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;