javascript - 计算单选按钮和下拉列表的价格

标签 javascript html

我有一个单选按钮列表和一个从数据库填充的下拉列表:

  <ul id="radio" class="input-list">
  <?php
  $stmt = mysqli_prepare($link, "SELECT id, name, price FROM cases ORDER BY price");
  $stmt->execute();
  $stmt->bind_result($case_id, $case_name, $case_price);
  while($stmt->fetch()) {
  echo '<li>
 <input class="selectedoptions" id="'.$case_id.'" name="config-prod" value="'.$case_price.'" type="radio">
  <label class="sub-label" for="'.$case_id.'">'.$case_name.'         [£'.$case_price.']</label>
 </li>';
 }
 $stmt->close();
 ?>
 </ul>

  <?php
  echo "<select class='form-control' id='plist' name='partlist'>";
  $type = "processors";

 $stmt2 = mysqli_prepare($link, "SELECT id, name, price FROM parts WHERE type=?");
 $stmt2->bind_param("s", $type);
 $stmt2->execute();
 $stmt2->bind_result($cpu_id, $cpu_name, $cpu_price);
 while($stmt2->fetch()){
  echo "<option value='$cpu_price'>$cpu_name</option>";
 }
 $stmt2->close();
 echo "</select>";
 ?>

我希望能够从两个列表中获取所选商品的价格。我尝试过用 JS 来做到这一点:

<script>

    var buildcost = 25.00;

    function updateTotal() {
    var radios = document.getElementsByName('config-prod');
    var partcost;

    for (var i = 0, length = radios.length; i < length; i++) {
        if (radios[i].checked) {
                partcost = parseInt(radios[i].value);
            break;
        }
    }

    total_cost = buildcost + partcost;
    document.getElementById('total').innerHTML = total_cost;

}
</script>

total_cost 应输出至此:

<input name="buildTotal" id="total" type="text" class="transparentFieldy float-price" disabled="" />

但是,这不会输出任何内容。如何更改它以便能够根据所选元素计算价格?谢谢!

最佳答案

要设置输入元素的内容,您必须使用value属性而不是innerHTML。如果您处理的是货币,您还应该考虑使用 parseFloat

let buildcost = 25.00;

function updateTotal() {
  let radios = document.getElementsByName('config-prod');
  let select = document.getElementById('plist');
  let partcost = 0;

  for (let i = 0, j = radios.length; i < j; i++) {
    if (radios[i].checked) {
      partcost = parseFloat(radios[i].value);
      break;
    }
  }
  
  partcost += parseFloat(select.options[select.selectedIndex].value);
  
  let total_cost = buildcost + partcost;
  document.getElementById('total').value = total_cost.toFixed(2);
}
<ul id="radio" class="input-list">
  <li>
    <input id="item-1" name="config-prod" value="1.00" type="radio" onchange="updateTotal();">
    <label for="item-1">Item 1 [£1.00]</label>
  </li>
  <li>
    <input id="item-2" name="config-prod" value="12.34" type="radio" onchange="updateTotal();">
    <label for="item-2">Item 2 [£12.34]</label>
  </li>
  <li>
    <input id="item-3" name="config-prod" value="9.99" type="radio" onchange="updateTotal();">
    <label for="item-3">Item 3 [£9.99]</label>
  </li>
</ul>

<select id="plist" name="partlist" onchange="updateTotal();">
  <option value="99.99">CPU 1</option>
  <option value="123.00">CPU 2</option>
  <option value="250.54">CPU 3</option>
</select>

<br>
Total: <input id="total" type="text"><button id="update" onclick="updateTotal();">Update</button>

关于javascript - 计算单选按钮和下拉列表的价格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56362872/

相关文章:

php - HTML 旁边隐藏了我的 js 导航栏

javascript - 如何知道所有 javascript 对象值是否为真?

Javascript/React - 不重复自己的最佳方式

javascript - 检查互联网的 Jquery/Ajax 代码

html - 对齐表格单元格底部的按钮

javascript - 无法将变量数据提取为字符串格式以传递给数据库

javascript - 根据弹出窗口中单击的按钮返回 true 或 false

javascript - 为什么 jQuery Extend Deep Copy 不递归复制对象?

javascript - Safari 扩展 safari.application 错误

javascript - 在 html 和 javascript 中使用 div 切换内容