选中复选框后,向JavaScript变量添加值

时间:2014-04-16 23:19:01

标签: javascript html checkbox innerhtml

这是用于计算所选计算机硬件元素总价的简单应用程序。它应该与innerHTML一起使用并以dinamically方式进行更改。

问题是我的代码没有任何反应,所以你可以在我的小提琴上查看它,或者只看下面的代码。它应该在最后一个方框中改变价格???

FIDDLE

代码:

<table style="width:230px;padding:5px;border:1px solid #f0f0f0;font-size:14px;">
<tr style="background-color:#f0f0f0;">
  <th style="width:200px;text-align:left;">Elements</th>
  <th align="center"></th>      
</tr>
<tr style="border-bottom:1px solid #a3a3a3;">
  <td>CPU unit</td>
  <td align="center">&#10003;</td>      
  </tr>
<tr>
<tr>
  <td>Motherboard</td>
  <td align="center">&#10003;</td>      
  </tr>
  <td>Graphic card</td>
  <td align="center"><input type="checkbox" id="id_1" value="25" onchange="check();"></td>      
</tr>
<tr>
  <td>Memory chip</td>
  <td align="center"><input type="checkbox" name="" value="" onchange="check();></td>       
</tr>
<tr>
  <td>Monitor</td>
  <td align="center"><input type="checkbox" name="" value="" onchange="check();></td>       
</tr>
</table>

<table style="width:220px;padding:1px;border:1px solid #f0f0f0;font-size:22px; font-weight:bold;">
<tr style="border-bottom:1px solid #a3a3a3;text-align:center;background-color:#80CCDC">

<td id="total"><script>document.getElementById('total').innerHTML = price;</script></td></tr><tr>
</table>

JAVASCRIPT

var basic = 300;
var add = 0;

function check()
  {
      if(document.getElementById("id_1").checked) {
    add = 120;
  }
      if(document.getElementById("id_1").checked) {
    add = 40;
  }
      if(document.getElementById("id_1").checked) {
    add = 90;
  }

 }
var p = basic + add;
var price = p + " &euro;"; 

2 个答案:

答案 0 :(得分:3)

有一些问题

  • 您需要在document.getElementById('total').innerHTML = price;内拨打check,以便在您点击复选框时更新;
  • 您不能拥有多个具有相同ID的项目。我将其更改为id_1,id_2,id_3
  • 您需要添加add变量
  • 中的现有值
  • 你必须连接所有复选框的更改,而不仅仅是第一个。

将您的代码更改为以下http://jsfiddle.net/mendesjuan/3ja4X/3/

function check() {
  var basic = 300;
  var add = 0;  
  if(document.getElementById("id_1").checked) {
    add += 120;
  }
  if(document.getElementById("id_2").checked) {
    add += 40;
  }
  if(document.getElementById("id_3").checked) {
    add += 90;
  }
  var p = basic + add;
  var price = p + " &euro;"; 
  document.getElementById('total').innerHTML = price;  
 }

check();

对于更干净的代码,您可以使用以下http://jsfiddle.net/mendesjuan/3ja4X/4/

function updateTotal(){
    var basic = 300;
    var add = 0;
    var form = document.getElementById('form');
    // Store the value for each item in the checkbox so
    // you don't need to have three separate `if`s  and IDs for them.
    var checkboxes = form.getElementsByClassName('addon');   
    for (var i=0; i < checkboxes.length; i ++) {
       if (checkboxes[i].checked) {
           add += parseInt(checkboxes[i].value, 10);
       }
    }
    var p = basic + add;
    var price = p + " &euro;"; 
    document.getElementById('total').innerHTML = price;  
}
// Hookup handlers from JS, not in the HTML from a single 
// place using event delegation
document.getElementById('form').addEventListener('change', updateTotal);

答案 1 :(得分:1)

在检查函数中添加计算,或在添加数字后计算:

function check(){
    if(document.getElementById("id_1").checked) {
        add = 120;
    }
    if(document.getElementById("id_1").checked) {
        add = 40;
    }
    if(document.getElementById("id_1").checked) {
        add = 90;
    }
    var p = basic + add;
    var price = p + " &euro;"; 
    document.getElementById('total').innerHTML = price;
}

这个代码不仅在加载页面时运行一次。