javascript - 无法通过单选类型检查计算 js 中的总数

标签 javascript html

我在这段代码中找不到问题,我有一个带有输入单选类型的表td,我想计算用户检查的类型、字符串、大小的总数。用户有 3 或 4 个选项,每个选项的价格都不同。我得到的结果始终为零。谁能帮我吗?

document.getElementById('calculate').addEventListener('click', function (ev) {
  
  var total=0;

  /* var radiotype = document.getElementsByName('type');
  var radiostrings = document.getElementsByName('strings');
  var radiosize = document.getElementsByName('size'); */

  for (var i = 0; i < 3; i++) {
    if (document.getElementById('acoustic').checked) {
      total+= 600;
      break;
    }
    else if (document.getElementById('electric').checked) {
      total += 900;
      break;
    }
    else if (document.getElementById('classical').checked) {
      total += 500;
      break;
    }

    if (document.getElementById('elixir').checked) {
      total+= 30;
      break;
    }
    else if (document.getElementById('daddario').checked) {
      total += 10;
      break;
    }
    else if (document.getElementById('martin').checked) {
      total += 20;
      break;
    }
  }

  for (var i = 0; i < 4; i++) {
    if (document.getElementById('1/4').checked) {
      total+= 20;
      break;
    }
    else if (document.getElementById('2/4').checked) {
      total += 30;
      break;
    }
    else if (document.getElementById('3/4').checked) {
      total += 40;
      break;
    }
    else if (document.getElementById('4/4').checked) {
      total += 50;
      break;
    }
  }

  var divobj = document.getElementById('result')
  divobj.value = total;
}); 

html 类型(其他类型类似):

  <table class="type">
                <thead>
                    <tr>
                        <td colspan="2">Choose Type</td>
                    </tr>
                </thead>
                <tbody>
                <tr>
                    <td id="acoustic"><input type="radio" name="type" value="acoustic" checked>Acoustic</td>
                    <td class="price">$600.00</td>
                </tr>
                <tr>
                    <td id="electric"><input type="radio" name="type" value="electric">Electric</td>
                    <td class="price">$900.00</td>
                </tr>
                <tr>
                    <td id="classical"><input type="radio" name="type" value="classical">Classical</td>
                    <td class="price">$500.00</td>
                </tr>
            </tbody>

最佳答案

问题(据我所知)是,如果检查任何值,您就会破坏循环。

为了让您清楚地了解,我们假设用户选择了声学;在第一次循环迭代中,if 语句将为 true,600 将被添加到 total 中,循环将被中断。

其他选项呢?没有任何处理。

您可以通过获取单选组(按名称)而不是固定的迭代次数来修复此问题,例如:

document.getElementById('calculate').addEventListener('click', function (ev) {
  var total= 0;

  var radiotype = document.getElementsByName('type');
  var radiostrings = document.getElementsByName('strings');
  var radiosize = document.getElementsByName('size');

  for(let node of radiotype) {
    if (!node.checked) continue;
    // radio is checked
    switch(node.value) {
      case 'acoustic':
        total+= 600;
        break;
      case 'electric':
        total+= 900;
        break;
      case 'classical':
        total+= 500;
        break;
    }
    // break the loop
    break;
  }
  // TODO: the same of the rest groups
});

这应该可以正常工作。

关于javascript - 无法通过单选类型检查计算 js 中的总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67398071/

相关文章:

javascript - 查找未在任何文件中定义的 html 标签的属性值

html - 什么决定一个链接是否被访问?

html - 垂直对齐表单输入的奇怪行为

javascript - 如何使用 jquery 更改标签上的永久颜色?

javascript - WordPress,PHP,Javascript,如何在js函数中获取变量?

javascript - Google Docs API - Text.replaceText 正则表达式问题

javascript - Uncaught ReferenceError : angular is not defined (anonymous function)

javascript - 无法将 JSON 对象转换为任何可用的对象

javascript - Javascript 中的 SVG 路径 0 - 1 范围转换

html - 隐藏的溢出使 img 下降并被剪裁