2012-12-16 70 views
0

我有需要三個輸入如下形式:從HTML表單的JavaScript

<form> 
    <input name="mn" 
      type="number" 
      min="1" 
      value="1"> 
    <input name="mx" 
      type="number" 
      min="2" 
      value="10"> 
    <input name="step" 
      type="number" 
      min="1" 
      value="1"> 
    <input onclick="myfunc()" 
      type="submit" 
      value="calculate"> 
    </form> 

所有我需要的是能夠直接訪問三個字段中的JavaScript。我不需要在其他地方傳遞信息。

任何人都可以指向正確的方向嗎?我已經閱讀過有一個輸入但沒有多個輸入的例子。

<script type="text/javascript"> 
    function myfunc() { 
    var mn = document.getElementsByName("mn") 
    var mx = document.getElementsByName("mx") 
    var step = document.getElementsByName("step") 
    alert((mn + mx)/step) 
    } 
    </script> 

回答

2

讓表單的ID如下

<form id="myForm"> 

另一件需要注意的是,value屬性是一個字符串s o將這兩個值連接起來,而不是將它們相加。

嘗試,而不是

var frm = document.forms["myForm"]; 

var _mn = parseInt(frm["mn"].value); 
var _mx = parseInt(frm["mx"].value); 
var _step = parseInt(frm["step"].value); 

var result = (_mn + _mx)/_step; 
+0

它確實與'id =「myform」一起工作' – beoliver

+1

小心,值將是字符串,所以'frm [「mn」] .value + frm [「mx」] .value'將連接值,而不是添加它們。先將它們轉換爲數字,例如使用'parseInt','Number','+'。 – RobG

+0

@RobG謝謝你。發現得好。相應地更正了我的代碼。 – Bruno

0

我會用給每個輸入自己的ID,然後我可以使用啓動:

var min = document.getElementById('mn') 

等。要訪問該值,您只需撥打電話

min.value 

此外,從min和a中刪除i並沒有意義。這不是優化,只是難以閱讀和理解。

0

如果u需要訪問的輸入值更改代碼:

function myfunc() { 
    var mn = document.getElementsByName("mn")[0]; 
    var mx = document.getElementsByName("mx")[0]; 
    var step = document.getElementsByName("step")[0]; 
    // you may need to validate your values here, like step.value != 0 
    alert((mn.value + mx.value)/step.value) 
} 
+1

這是否工作,不getElementsByName返回數組? –

+0

這是真的! tnx用於校正 –

+0

並且您正在處理字符串,因此:'(Number(mn.value)+ Number(mx.value))/ step.value',除非需要連接。 – RobG

0

試試這個:

<script type="text/javascript"> 
    function myfunc() { 
    var mn = document.getElementsByName("mn")[0].value; 
    var mx = document.getElementsByName("mx")[0].value; 
    var step = document.getElementsByName("step")[0].value; 
    var top = mn/mx; 
    alert(top/step); 
    } 
    </script>