2017-02-27 47 views
0

我试图让我的形式用JavaScript从输入值的值。但是无论何时我提交,我都没有任何东西,0或未定义。大部分未定义。它似乎没有得到任何价值。JavaScript不能得到输入

下面的代码

<form id="ecoCalculator"> 
     <div class="form-group"> 
      <label for="k0">Start Kapital</label> 
      <input type="number" name="k0" class="form-control" id="k0"> 
     </div> 

     <div class="form-group"> 
      <label for="kn">Slut Kapital</label> 
      <input type="number" name="kn" class="form-control" id="kn"> 
     </div> 

     <div class="form-group"> 
      <label for="x">Rente</label> 
      <input type="number" name="x" class="form-control" id="x"> 
     </div> 

     <div class="form-group"> 
      <label for="n">Terminer</label> 
      <input type="number" name="n" class="form-control" id="n"> 
     </div> 

     <div class="ecoButtons"> 
      <input type="button" value="Udregn" class="btn btn-default" onclick="k0Eco()"> 
      <input type="reset" value="Ryd" class="btn btn-default"> 
     </div> 

    </form> 

    <div class="ecoResult"> 
     <p id="ecoResult">Resultat</p> 
    </div> 

</div> 

<script type="text/javascript"> 
     // Public Variables 
     var k0 = document.getElementById('k0').value(); 
     var kn = document.getElementById('kn').value(); 
     var x = document.getElementById('x').value(); 
     var n = document.getElementById('n').value(); 

     // Calculation of Initial Capital 
     function k0Eco() { 
      // Calculation 
      var k0Value = kn/(1 + x)^n; 
      // Show Result 
      document.getElementById("ecoResult").innerHTML = k0; 
     } 

我在不同的问题,看了看周围,但还没有找到一个解决这个呢。

我试图更改输入名称,具有该功能只显示一个值,但仍然没有结果。

谢谢

+0

您可能想要创建一个提交函数来防止默认行为,以便您可以先执行计算 – happymacarts

+0

我不认为您知道是否可以从输入中获取值。你的代码只打印最终结果。 –

+1

尝试'价值'不'价值()'。这是一种财产而非功能。并且获取值的脚本在页面加载时运行,所以不可避免地这些字段是空白的。您需要将它全部移到k0Eco函数中,以获取当时的值。 – ADyson

回答

1

值不是一个函数,它是一个属性。更改

var k0 = document.getElementById('k0').value() 

var k0 = document.getElementById('k0').value 

你的脚本也运行在页面加载,所以还未有任何填补。你需要把整个事情在提交处理程序:

document.getElementById('ecoCalculator').addEventListener('submit', function(e) { 
    e.preventDefault(); 
    // your code here 

}); 

现在从按钮删除内联JS并将其类型提交:

<input type="submit" value="Udregn" class="btn btn-default" /> 

并删除你的JS功能

var k0 = document.getElementById('k0').value; 
var kn = document.getElementById('kn').value; 
var x = document.getElementById('x').value; 
var n = document.getElementById('n').value; 

// Calculation 
var k0Value = kn/(1 + x)^n; 
// Show Result 
document.getElementById("ecoResult").innerHTML = k0Value; 

Here's a working fiddle

+0

当我按提交时,它仍然说'未定义' –

+0

编辑答案@zerovacpls – baao

+0

现在提交什么也不做@baao –

0

你需要解析的int输入值。例如。

// Public Variables 
    var k0 = parseInt(document.getElementById('k0').value); 
    var kn = parseInt(document.getElementById('kn').value); 
    var x = parseIntdocument.getElementById('x').value); 
    var n = parseIntdocument.getElementById('n').value); 
+2

'.value'不是' document.getElementBy'你需要删除parens。 – scrappedcola

0
  • 使用value,而不是value()。这是一种财产而非功能。

  • 把你的变量的函数内部。当页面加载变量 正在获取输入的值,并且没有任何内容。

function k0Eco() { 
    var k0 = document.getElementById('k0').value; 
    var kn = document.getElementById('kn').value; 
    var x = document.getElementById('x').value; 
    var n = document.getElementById('n').value; 

    var k0Value = kn/(1 + x)^n; 

    document.getElementById("ecoResult").innerHTML = k0Value; 
} 
  • javascript代码里面<head>标签或按钮之前,至少把你。当您尝试触发onclick()事件时,您的功能尚未创建。
+1

JavaScript不必在头标记中。它可以位于结束“body”标签之前的页面底部。建议用于页面加载速度优势。另外铬开发人员工具中的错误是函数k0Eco()未定义。所以我猜.value或.value()不是真正的问题。 – user3526204

+1

糟糕的评论@ user3526204。其中一个问题是肯定使用财产作为功能。你在Chrome开发者工具中遇到的错误正是因为你没有按照说明操作 - 试着把你的javascript放在head标签中。 –

+0

@PaulCastilho,我没有说过这不是问题。但我同意如果将JavaScript放在head标签中可以解决这种情况,那肯定是解决方案。但是,接受的答案还讨论了使用提交处理程序和事件侦听器。另外我猜想有很多帖子提倡将javascript放在主体的尽头以避免渲染阻塞。 – user3526204