【问题标题】:Need help getting fields to Populate using Javascript需要帮助获取使用 Javascript 填充的字段
【发布时间】:2016-08-03 04:54:21
【问题描述】:

我正在参加 HTML 入门课程,并且一直在努力寻找使用 java 的页面的错误。我确定我犯了一个简单的错误,但我没有看到它

这是我正在使用的代码的小提琴: https://jsfiddle.net/Terranova1340/ctc66nmu/2/

  <body onload="processForm()">
<div id="wrapper">
<form  id="cars" method="get">
<h1>AutoMart Sales Order Form</h1>
<img id="imgCar" src="civic2.jpg" />
<table class="Controls">
<tr>
<td><label for="Model">Select a Model:</label><br></td>
<td><select id="selModel" onchange="chgImage()">
  <option value="civic" >Civic</option>
  <option value="accord" >Accord</option>
  </select></td>
</tr>
<tr>
<td><label for="optAcces">Optional Accessories:</label><br></td>
<td><label class='checkbox'><input type="checkbox" id="optAcces1"value="stereoSys" onchange="processForm()"> Stereo System<br>
<label class='checkbox'><input type="checkbox" id="optAcces2" value="leatherInt" onchange="processForm()"> Leather Interiors<br>
<label class='checkbox'><input type="checkbox" id="optAcces3" value="gpsSys" onchange="processForm()"> GPS System<br><br>
</td>
</tr>
<tr>
</tr>
<tr>
<tr>
</tr>
<td><label for="extFin">Exterior Finish:</label><br></td>
<td><label class='radiolabel'><input type="radio" name="selectedfinish" id="stanFin" onchange="processForm()"> Standard Finish<br>
<label class='radiolabel'><input type="radio" name="selectedfinish" id="metalFin" onchange="processForm()"> Metalic Finish<br>
<label class='radiolabel'><input type="radio" name="selectedfinish" id="custFin" onchange="processForm()"> Customized Finish<br>
</td>
</tr>
<tr>
<td><label for="base">Base Price</label><br></td>
<td><input type="text" id="basePrice" style="text-align:right;" readonly><br></td>
</tr>
<tr>
<td><label for="access">Accessories Price</label><br></td>
<td><input type="text" id="accessPrice" style="text-align:right;" readonly><br></td>
</tr>
<tr>
<td><label for="extPrice">Exterior Finish Price</label><br></td>
<td><input type="text" id="extPrice" style="text-align:right;" readonly><br></td>
</tr>
<tr>
<td><label>Estimated Total Price</label><br></td>
<td><input class- "ReadOnlyControls" type="text" name="estPrice" id="estPrice" style="text-align:right;" readonly><br></td>
</tr>
</table>




<input class="buttons" type="reset"  value="Clear">
<input class="buttons" type="button" onclick="window.print()"; value="Print Form" id="print">





</form>
</div>
</body>
</html>

Java 是

function chgImage() {
    if (document.getElementById("selModel").value =="civic")
        {
            document.getElementById("imgCar").src="Civic2.jpg";
        }
    else
    {
        document.getElementById("imgCar").src="Accord2.jpg";
    }
    processForm();
}

function processForm(){

    var bPrice = 0;
    var aPrice = 0;
    var oPrice = 0;
    var tPrice = 0;

    if (document.getElementById("selModel").value =="civic")
    {
            bPrice = 17355.89;

         if (document.getElementById("optAccess1").checked == true)
        { 
            aPrice = aPrice + 400.22;
        }
         if (document.getElementById("optAccess2").checked == true)
        {
            aPrice = aPrice + 850.44;
        }
         if (document.getElementById("optAccess3").checked == true)
        {
            aPrice = aPrice + 1600.00;
        }
         if (document.getElementById("metalFin").checked == true)
        {
            oPrice = 305.72;
        }
         if (document.getElementById("custFin").checked == true)
        {
            oPrice = 350.00;
        }
    }
    else
    {
     basePrice = 19856.79;

         if (document.getElementById("optAccess1").checked == true)
         {
            aPrice = aPrice + 500.89;
         }
         if (document.getElementById("optAccess2").checked == true)
         {
            aPrice = aPrice + 1015.85;
         }
         if (document.getElementById("optAccess3").checked == true)
         {
            aPrice = aPrice + 1600.00;
         }
         if (document.getElementById("metalFin").checked == true)
         {
            oPrice = 385.67;
         }
         if (document.getElementById("custFin").checked == true)
        {
            oPrice = 400.00;
        }
    }



    //calculate total

    tPrice = bPrice+aPrice+oPrice;
    document.getElementById("basePrice").value = "$" + formatCurrency(bPrice).toString();
    document.getElementById("accessPrice").value = "$" + formatCurrency(aPrice).toString();
    document.getElementById("extPrice").value = "$" + formatCurrency(oPrice).toString();
    document.getElementById("estPrice").value = "$" + formatCurrency(tPrice).toString();

    }

    function formatCurrency(num){
    num = isNaN(num) || num === ''|| num === null ? 0.00 : num;
    return parseFloat(num).toFixed(2);
    }

我的问题是未填充“估计总价”字段的“基本价格”。

提前致谢!

【问题讨论】:

  • 这是 Javascript,不是 Java。
  • 感谢指正,给您造成的困扰,敬请原谅。

标签: javascript


【解决方案1】:

function chgImage() {
    if (document.getElementById("selModel").value =="civic")
        {
            document.getElementById("imgCar").src="Civic2.jpg";
        }
    else
    {
        document.getElementById("imgCar").src="Accord2.jpg";
    }
    processForm();
}

function processForm(){

    var bPrice = 0;
    var aPrice = 0;
    var oPrice = 0;
    var tPrice = 0;

    if (document.getElementById("selModel").value =="civic")
    {
            bPrice = 17355.89;

         if (document.getElementById("optAccess1").checked == true)
        { 
            aPrice = aPrice + 400.22;
        }
         if (document.getElementById("optAccess2").checked == true)
        {
            aPrice = aPrice + 850.44;
        }
         if (document.getElementById("optAccess3").checked == true)
        {
            aPrice = aPrice + 1600.00;
        }
         if (document.getElementById("metalFin").checked == true)
        {
            oPrice = 305.72;
        }
         if (document.getElementById("custFin").checked == true)
        {
            oPrice = 350.00;
        }
    }
    else
    {
     basePrice = 19856.79;

         if (document.getElementById("optAccess1").checked == true)
         {
            aPrice = aPrice + 500.89;
         }
         if (document.getElementById("optAccess2").checked == true)
         {
            aPrice = aPrice + 1015.85;
         }
         if (document.getElementById("optAccess3").checked == true)
         {
            aPrice = aPrice + 1600.00;
         }
         if (document.getElementById("metalFin").checked == true)
         {
            oPrice = 385.67;
         }
         if (document.getElementById("custFin").checked == true)
        {
            oPrice = 400.00;
        }
    }



    //calculate total

    tPrice = bPrice+aPrice+oPrice;
    document.getElementById("basePrice").value = "$" + formatCurrency(bPrice).toString();
    document.getElementById("accessPrice").value = "$" + formatCurrency(aPrice).toString();
    document.getElementById("extPrice").value = "$" + formatCurrency(oPrice).toString();
    document.getElementById("estPrice").value = "$" + formatCurrency(tPrice).toString();

    }

    function formatCurrency(num){
    num = isNaN(num) || num === ''|| num === null ? 0.00 : num;
    return parseFloat(num).toFixed(2);
    }
<body onload="processForm()">
<div id="wrapper">
<form  id="cars" method="get">
<h1>AutoMart Sales Order Form</h1>
<img id="imgCar" src="civic2.jpg" />
<table class="Controls">
<tr>
<td><label for="Model">Select a Model:</label><br></td>
<td><select id="selModel" onchange="chgImage()">
  <option value="civic" >Civic</option>
  <option value="accord" >Accord</option>
  </select></td>
</tr>
<tr>
<td><label for="optAcces">Optional Accessories:</label><br></td>
<td><label class='checkbox'><input type="checkbox" id="optAccess1"value="stereoSys" onchange="processForm()"> Stereo System<br>
<label class='checkbox'><input type="checkbox" id="optAccess2" value="leatherInt" onchange="processForm()"> Leather Interiors<br>
<label class='checkbox'><input type="checkbox" id="optAccess3" value="gpsSys" onchange="processForm()"> GPS System<br><br>
</td>
</tr>
<tr>
</tr>
<tr>
<tr>
</tr>
<td><label for="extFin">Exterior Finish:</label><br></td>
<td><label class='radiolabel'><input type="radio" name="selectedfinish" id="stanFin" onchange="processForm()"> Standard Finish<br>
<label class='radiolabel'><input type="radio" name="selectedfinish" id="metalFin" onchange="processForm()"> Metalic Finish<br>
<label class='radiolabel'><input type="radio" name="selectedfinish" id="custFin" onchange="processForm()"> Customized Finish<br>
</td>
</tr>
<tr>
<td><label for="base">Base Price</label><br></td>
<td><input type="text" id="basePrice" style="text-align:right;" readonly><br></td>
</tr>
<tr>
<td><label for="access">Accessories Price</label><br></td>
<td><input type="text" id="accessPrice" style="text-align:right;" readonly><br></td>
</tr>
<tr>
<td><label for="extPrice">Exterior Finish Price</label><br></td>
<td><input type="text" id="extPrice" style="text-align:right;" readonly><br></td>
</tr>
<tr>
<td><label>Estimated Total Price</label><br></td>
<td><input class- "ReadOnlyControls" type="text" name="estPrice" id="estPrice" style="text-align:right;" readonly><br></td>
</tr>
</table>




<input class="buttons" type="reset"  value="Clear">
<input class="buttons" type="button" onclick="window.print()"; value="Print Form" id="print">





</form>
</div>
</body>
</html>

你用错了id's,这里改成optAccess1,optAccess2,optAccess3

    <td><label class='checkbox'><input type="checkbox" id="optAccess1"value="stereoSys" onchange="processForm()"> Stereo System<br>
    <label class='checkbox'><input type="checkbox" id="optAccess2" value="leatherInt" onchange="processForm()"> Leather Interiors<br>
    <label class='checkbox'><input type="checkbox" id="optAccess3" value="gpsSys" onchange="processForm()"> GPS System<br><br>
    </td>

【讨论】:

  • 太棒了!这样就纠正了一半的问题。但是,当我将下拉菜单从 Civic 更改为 Accord 时,会发生与以前相同的情况。
  • 我知道了,非常感谢您的帮助!!!我一天中大部分时间都在用头撞墙。
猜你喜欢
  • 2014-06-22
  • 2013-08-21
  • 1970-01-01
  • 2012-05-19
  • 1970-01-01
  • 1970-01-01
  • 2010-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多