首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在所有行中乘以Cell[2] cell[3]。Cell[2]*Cell[3]。两个单元格都是Dropboxes

在所有行中乘以Cell[2] cell[3]。Cell[2]*Cell[3]。两个单元格都是Dropboxes
EN

Stack Overflow用户
提问于 2017-03-21 18:26:20
回答 1查看 78关注 0票数 0

GPAcalculator。因此,我需要将cells2和cell3相乘,然后将结果相加。但这两个细胞都是dropboxes。那么如何在同一行的cell2和cell3中获取dropbox的id呢?注意:允许动态添加行。

代码语言:javascript
复制
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);
}
代码语言:javascript
复制
<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 &amp; Download&nbsp; <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&nbsp;&nbsp;<i class="fa fa-calculator" aria-hidden="true"></i></button>

EN

回答 1

Stack Overflow用户

发布于 2017-03-21 19:09:57

您需要获取类名为custom-select的所有元素。getElementsByClassName将返回一个包含2个元素的数组。现在,您可以按索引访问特定值。

代码语言:javascript
复制
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 value

idxc将具有Credits值,而idxg将具有等级值。

编辑:

总结一下你需要的所有内容:

代码语言:javascript
复制
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);

fiddle DEMO

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42924369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档