2017-02-27 72 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