Как перебрать несколько выпадающих списков и получить доступ к значениям их параметров - PullRequest
3 голосов
/ 23 февраля 2010

Я пишу код для базового калькулятора GPA. По сути, это таблица из трех столбцов, две текстовые области для названия курса / кредитных часов и раскрывающийся список, который содержит буквенные оценки (A +, C, B-) и соответствующие им значения баллов в качестве значения параметра * 1002. * вот так

<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 ]

3 голосов
/ 23 февраля 2010

Доберитесь до <select> предметов первым. Если это возможно, я предлагаю вам использовать document.getElementsByTagName('select'), чтобы получить список всех тегов <select> на вашей странице. Затем с каждым тегом <select> вызовите theSelectTag.getElementsByTagName('option') (где theSelectTag - это объект из возвращенного списка узлов). Затем вы можете получить доступ к их значению через свойство value (в противном случае), а к их метке - через свойство textContent.

getElementsByTagName возвращает объект NodeList, но вы можете в значительной степени относиться к нему так же, как к Array.

0 голосов
/ 23 февраля 2010

Я наконец получил все, чтобы работать благодаря ответу 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;
...