如何在按下按钮时处理输入数据?

时间:2019-01-19 17:28:43

标签: javascript

我有以下代码可以运行,但不是应有的运行方式。用户必须从下拉列表中选择一个值,然后根据选择的值,使用input字段中的数据来计算面积。 switch可以正常工作,因为我可以看到警报,但是返回的区域(aria1 / aria2)显示为NaN。

在此处找到:https://jsfiddle.net/aLgvwq3r/

选择“格式1”并插入一些值。按下按钮后,我应该获取该区域的值而不是NaN。

似乎不是来自输入的值。我该怎么办?

function arie1() {
  var lungC = parseFloat(document.getElementById('lungC').value);
  var latC = parseFloat(document.getElementById('latC').value);
  var hC = parseFloat(document.getElementById('hC').value);
  var hBaza = parseFloat(document.getElementById('hTotal').value);
  var latBaza = parseFloat(document.getElementById('latBaza').value);
  var aria1 = 2 * lungC * latC + 2 * lungC * hTotal + 2 * latBaza * (hC + hTotal) + 2 * 0.5 * lungC + 0.5 * latBaza + 5; //se vor lua 5m2 de rezerva si se va mentiona pe site sa se mai adauge o marja de eroare
  document.getElementById('mpv').innerHTML = aria1;
  document.getElementById('mp').style.display = 'block';

}

function arie2() {
  var lungC = parseFloat(document.getElementById('lungC').value);
  var latC = parseFloat(document.getElementById('latC').value);
  var hC = parseFloat(document.getElementById('hC').value);
  var hBaza = parseFloat(document.getElementById('hTotal').value);
  var latBaza = parseFloat(document.getElementById('latBaza').value);
  aria2 = parseFloat(lungC * latC + 2 * lungC * hTotal + 2 * latBaza * (hC + hTotal) + 2 * 0.5 * lungC + 0.5 * latBaza + 5); //se vor lua 5m2 de rezerva si se va mentiona pe site sa se mai adauge o marja de eroare
  document.getElementById('mpv').innerHTML = aria2;
  document.getElementById('mp').style.display = 'block';
}

function switcherForma() {
  switch (parseInt(document.getElementById('select-forma').value, 10)) {
    case 1:
      alert("Ati ales Forma 1");
      document.getElementById('f1').style.color = "red";
      document.getElementById('calculeaza').addEventListener('click', arie1);
      break;

    case 2:

      break;

    case 3:

      break;
  }
}

2 个答案:

答案 0 :(得分:0)

你走了,

让我知道这是否是您想要的

为此替换您的arie1函数:

function arie1() {
    var lungC = parseFloat(document.getElementById('lungC').value);
    var latC = parseFloat(document.getElementById('latC').value);
    var hC = parseFloat(document.getElementById('hC').value);
    var hBaza = parseFloat(document.getElementById('hTotal').value);
    var latBaza = parseFloat(document.getElementById('latBaza').value);
    var aria1 = lungC + latC + hC + hBaza + latBaza;
    document.getElementById('mpv').innerHTML = aria1;
    document.getElementById('mp').style.display = 'block';

    console.log(aria1);
  }

答案 1 :(得分:0)

计算结果时,变量hTotal不是数字,而是元素。 将计算更改为此,它对我有用:

2*lungC*latC + 2*lungC*hTotal.value + 2*latBaza*(hC+hTotal.value) +2*0.5*lungC + 0.5*latBaza + 5