Javascript排序表单无法计算时遇到问题

Javascript排序表单无法计算时遇到问题,javascript,html,Javascript,Html,因此,当我试图使用javascript计算总数时,我的订单出现了一个空错误。我相信我已经做了一切。我在下面第13行得到一个以.innerHTML开头的错误 <script type="text/javascript"> function doTotals() { var strains = ['guptakush_', 'headbandguptakush_', 'purplejuicyfruitguptakush_', 'hibiscussunrise_', 'criticalk

因此,当我试图使用javascript计算总数时,我的订单出现了一个空错误。我相信我已经做了一切。我在下面第13行得到一个以.innerHTML开头的错误

<script type="text/javascript">
function doTotals() {

var strains = ['guptakush_', 'headbandguptakush_', 'purplejuicyfruitguptakush_', 'hibiscussunrise_', 'criticalkushguptakush_', 'columbiagoldguptakush_', 'grapeapeguptakush_', 'krishnakush_', 'durbinpoisonguptakush_', 'purpleeurkleguptakush_', 'columbiagoldafgani_', 'kandykushguptakush_', 'hibiscussunriseafgani_', 'afgani_', 'grapeapeafgani_', 'krishnaafgani_', 'hashplantafgani_', 'durbinpoisonafgani_'];
var priceStr = 'price';
var quantityStr = 'quantity';
var subtotalStr = 'subtotal';
var total = 0.00;
for (var i = 0; i < strains.length; i++) {
    var price = document.getElementById(strains[i] + priceStr).value;
    var quantity = document.getElementById(strains[i] + quantityStr).value;
    document.getElementById(strains[i] + subtotalStr)
        .innerHTML = parseInt(price) * parseInt(quantity);
    total += price * quantity;
}
document.getElementById("finaltotal").innerHTML = total;
}

function setup() {
var lastCol = document.getElementById("subtotal_header");

var theForm = document.getElementById("orderform");

var amounts = document.getElementsByTagName("select");
for(var i = 0; i < amounts.length; i++){
    amounts[i].onchange = doTotals;
}

}

window.onload = setup;

</script>

函数doTotals(){
变异株=【古普塔库什】、【头带古普塔库什】、【紫汁水果古普塔库什】、【木槿花古普塔库什】、【临界古普塔库什】、【哥伦比亚黄金古普塔库什】、【石墨古普塔库什】、【克里希纳库什】、【杜宾中毒古普塔库什】、【紫红色古普塔库什】、【哥伦比亚黄金古普塔库什】、【坎迪库斯古普塔库什】、【木槿花古普塔库什】、【古普塔库什】、【古普塔库什】、【古普塔库什】、【古普塔库什】、【古普塔库什】、【古普塔库什】、【古普塔库什】、【古普塔库什】、【古,“hashplantafgani”、“Durbindositonafgani”];
var priceStr=‘价格’;
var quantityStr=‘数量’;
var小计STR=‘小计’;
var总计=0.00;
对于(var i=0;i
这里是与一个示例关联的HTML,它们都具有唯一的id和名称

<div class="form-group mb-3">
<label class="form-control-label" for="guptakush_quantity">Gupta Kush</label>
<input type="hidden" id="guptakush_price" value="1.00">
<select class="form-control-inline form-control-sm" id="guptakush_quantity" name="guptakush_quantity" size="1">
  <option value="0">0</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
  <option value="5">5</option>
  <option value="6">6</option>
  <option value="7">7</option>
  <option value="8">8</option>
  <option value="9">9</option>
  <option value="10">10</option>
</select>
<input type="hidden" id="guptakush_subtotal">
</div>
<div class="input-group">
    <div class="input-group-prepend">
      <div class="input-group-text">$</div>
    </div>
<input type="text" class="form-control-inline col-sm-1" id="finaltotal" name="finaltotal" placeholder="$0.00" readonly>
</div>

古普塔库什
0
1.
2.
3.
4.
5.
6.
7.
8.
9
10
$
完整示例:

另外,如果我可以在没有小计的情况下完成这项工作,因为我认为没有必要这样做,那将非常棒。

很多问题:

  • 您没有定义小计,因此为空
  • 您没有执行设置函数,因为没有包含括号
  • 您的
    元素在按ID选择时似乎不可填充(不确定是怎么回事,但将其更改为div有效)
  • 选中此项:

    在我的版本中,我修复了前两个问题。然后,对于第一个
    元素,我用一个
    替换它,以便您可以看到输出。您必须完成并为其他元素执行类似的操作。

    大量问题:

  • 您没有定义小计,因此为空
  • 您没有执行设置函数,因为没有包含括号
  • 您的
    元素在按ID选择时似乎不可填充(不确定是怎么回事,但将其更改为div有效)
  • 选中此项:


    在我的版本中,我修复了前两个问题。然后,对于第一个
    元素,我将其替换为
    ,这样您就可以看到输出。您必须仔细检查并对其他元素执行类似的操作。

    问题是数组中包含许多div,而不是HTML中的div

    第一项“guptakush”
    仅存在于html中

    所以,如果您在设置值之前检查div是否存在,它将解决问题 + 最终结果不是html输入的,因此使用.value而不是.inerHTML输入新值

    工作演示:

    函数doTotals(){
    变异株=【古普塔库什】、【头带古普塔库什】、【紫汁水果古普塔库什】、【木槿花古普塔库什】、【临界古普塔库什】、【哥伦比亚黄金古普塔库什】、【石墨古普塔库什】、【克里希纳库什】、【杜宾中毒古普塔库什】、【紫红色古普塔库什】、【哥伦比亚黄金古普塔库什】、【坎迪库斯古普塔库什】、【木槿花古普塔库什】、【古普塔库什】、【古普塔库什】、【古普塔库什】、【古普塔库什】、【古普塔库什】、【古普塔库什】、【古普塔库什】、【古普塔库什】、【古,“hashplantafgani”、“Durbindositonafgani”];
    var priceStr=‘价格’;
    var quantityStr=‘数量’;
    var小计STR=‘小计’;
    var总计=0.00;
    对于(var i=0;i
    
    古普塔库什
    0
    1.
    2.
    3.
    4.
    5.
    6.
    7.
    8.
    9
    10
    $
    
    问题在于数组中包含的div比HTML中的多

    第一项“guptakush”
    仅存在于html中

    所以,如果您在设置值之前检查div是否存在,它将解决问题 + 最终结果不是html输入的,因此使用.value而不是.inerHTML输入新值

    工作演示:

    函数doTotals(){
    变异株=【古普塔库什】、【头带古普塔库什】、【紫汁水果古普塔库什】、【木槿花古普塔库什】、【临界古普塔库什】、【哥伦比亚黄金古普塔库什】、【石墨古普塔库什】、【克里希纳库什】、【杜宾中毒古普塔库什】、【紫红色古普塔库什】、【哥伦比亚黄金古普塔库什】、【坎迪库斯古普塔库什】、【木槿花古普塔库什】、【古普塔库什】、【古普塔库什】、【古普塔库什】、【古普塔库什】、【古普塔库什】、【古普塔库什】、【古普塔库什】、【古普塔库什】、【古,“hashplantafgani”、“Durbindositonafgani”];
    var priceStr=‘价格’;
    var quantityStr=‘数量’;
    var小计STR=‘小计’;
    var总计=0.00;
    对于(var i=0;i