使用Javascript计算表单字段,其中包含单选按钮,文本字段和滑块的组合

时间:2013-10-17 15:04:47

标签: javascript jquery html forms

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<script>
function baseCalculate(slider,sqft,plumbing,credit){
    var cost = document.getElementById("cost");
    var slideval = document.getElementById("slideval");
    var sqft = document.getElementById("sqft");
    var plumbing = document.getElementsByName("plumbing");
    var credit = document.getElementsByName("Credit");
    var price = slider;
    cost.innerHTML = "$"+(((sqft * price) + plumbing) * credit);
    slideval.innerHTML = slider;
}
</script>
</head>

<body>
<h2>Job Estimator</h2>
How many square feet? 
<input type="text" id="sqft"><br>
Price per Square Foot? <input type="range" min="55" max="80" value="70" step="1 
onChange="baseCalculate(this.value,'sqft','plumbing','Credit')" style="width:500px;">

<span id="slideval">70</span>
<p>
 <legend>Will there be plumbing?</legend> <label>
    <input type="radio" name="plumbing" value="150" id="plumbing_0">
    yes</label>
  <br>
  <label>
    <input type="radio" name="plumbing" value="0" id="plumbing_1">
    no</label>
  <br>
  <label>
    <input type="radio" name="plumbing" value="-150" id="plumbing_2">
    promo</label>
  <br>
</p>
<p><legend>Paying with credit card?</legend>
  <label>
    <input type="radio" name="Credit" value="1.06" id="Credit_0">
    Yes</label>
  <br>
  <label>
    <input type="radio" name="Credit" value="1" id="Credit_1">
    No</label>
  <br>
   <label>
     <input type="radio" name="Credit" value=".94" id="Credit_2">
    Promo</label>
  <br>
</p>
<h2>This is the cost of the project: <span id="cost"></span></h2>
</body>
</html>

这是我正在使用的代码。我试图让它乘以平方英尺的价格然后加上管道,然后将所有这些乘以信用。

我在这里缺少什么?它返回一个NaN。

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

您必须使用 textContent 获取文字值并执行计算

var cost = document.getElementById("cost").textContent;
var slideval = document.getElementById("slideval").textContent;
var sqft = document.getElementById("sqft").textContent;

以及输入元素

var plumbing = document.getElementsByName("plumbing")[0].value;
var credit = document.getElementsByName("Credit")[0].value;

getElementsByName将返回数组,此处我获取第一个值[0]

您的情况需要执行for循环并检查checked属性并获取其value进行计算