GPAcalculator。因此,我需要将cells2和cell3相乘,然后将结果相加。但这两个细胞都是dropboxes。那么如何在同一行的cell2和cell3中获取dropbox的id呢?注意:允许动态添加行。
function multiplyadd() {
var tbody = document.getElementById("gpatable");
var answer = 0,
answer1 = 0;
for (var i = 0; i < tbody.rows.length; i++) {
var row = tbody.rows[i + 1];
var idd = document.getElementById("gpatable").rows[i + 1].cells[2].id;
var strUser = idd.options[idd.selectedIndex].value;
// var credits = row.cells[2].childNodes[0].options[selectedIndex].value;
var credits = parseInt(strUser);
var id1 = document.getElementById(row.cells[3].childNodes[0]);
var grades = parseInt(id1);
// var grades = row.cells[3].childNodes[0].options[selectedIndex].value;
var answer1 = (Number(credits) * Number(grades)).toFixed(3);
answer = answer + answer1;
}
alert(answer);
}<table id="gpatable" class="table col-md-8 offset-md-2">
<thead class="bg-faded">
<tr>
<th>#</th>
<th width="370px">Course Name</th>
<th>Credits</th>
<th>Grades</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row" id="one" value="1">1</th>
<td class="td"><input type="text" name="subname" class="form-control col-md-8"></td>
<td class="td">
<select onchange="updatecreditarray(this.id);" id="select_credit" class="custom-select">
<option selected>-</option>
<option value="1">1.00</option>
<option value="2">2.00</option>
<option value="3">3.00</option>
<option value="4">4.00</option>
</select>
</td>
<td class="td">
<select onchange="updategradearray(this.id);" id="select_grades" class="custom-select">
<option selected>-</option>
<option value="4">A+</option>
<option value="3.75">A</option>
<option value="3.5">A-</option>
<option value="3.25">B+</option>
<option value="3">B</option>
<option value="2.75">B-</option>
<option value="2.5">C+</option>
<option value="2.25">C</option>
<option value="2">C-</option>
<option value="0">F</option>
</select>
</td>
</tr>
</tbody>
</table>
<div class=" row col-md-8 offset-md-2" style="padding:0;">
<button title="Add course" type="button" onclick="addrow();" class="btn btn-secondary col-md-1 col-sm-5 col-xs-12" id="addcourse" name="addcourse"><i class="fa fa-plus" aria-hidden="true"></i></button>
<button title="Remove course" type="button" onclick="subrow();" class="btn btn-secondary col-md-1 col-sm-5 col-xs-12" id="subcourse" name="addcourse"><i class="fa fa-minus" aria-hidden="true"></i></button>
<button type="button" class="btn btn-secondary col-md-3 col-sm-5 col-xs-12" id="calcdown" name="addcourse">Calculate & Download <i class="fa fa-download" aria-hidden="true"></i></button>
<button type="button" onclick="calculate();" class="btn btn-primary col-md-2 offset-md-5 col-sm-4 col-xs-12" id="calc" name="addcourse">Calculate <i class="fa fa-calculator" aria-hidden="true"></i></button>
发布于 2017-03-21 19:09:57
您需要获取类名为custom-select的所有元素。getElementsByClassName将返回一个包含2个元素的数组。现在,您可以按索引访问特定值。
var dd = document.getElementsByClassName('custom-select'); //this will get elements with class custom-select
var idxc = dd[0].options[dd[0].selectedIndex].value; // this will get Credits element value
var idxg = dd[1].options[dd[1].selectedIndex].value; // this will get Grade element valueidxc将具有Credits值,而idxg将具有等级值。
编辑:
总结一下你需要的所有内容:
document.getElementById("calc").addEventListener("click", function() {
var dd = document.getElementsByClassName('custom-select');
var sum = 0;
if (dd) { // if custom-select element found
for (var i = 0; i < dd.length - 1; i = i + 2) {
if (!isNaN(dd[i].options[dd[i].selectedIndex].value) && !isNaN(dd[i + 1].options[dd[i + 1].selectedIndex].value)) {
sum += dd[i].options[dd[i].selectedIndex].value * dd[i + 1].options[dd[i + 1].selectedIndex].value;
} else {
console.log("ERR: Please select all values");
i = dd.length; // break loop
sum = 0; // in case of error
}
}
}
console.log(sum);
}, false);https://stackoverflow.com/questions/42924369
复制相似问题