2014-09-25 81 views
-1

通過這種形式從HTML:不能發送形式

<form name="testform" onsubmit="return processForm(this)"> 
Number 1: <input type="text" name="number1"/><br /> 
Number 2: <input type="text" name="number2"/><br /> 
Number 3: <input type="text" name="number3"/><br /> 
Number 4: <input type="text" name="number4"/><br /> 
Number 5: <input type="text" name="number5"/><br /> 
Number 6: <input type="text" name="number6"/><br /> 
<input type="submit" value="Send numbers"/> 
</form> 

而這個JavaScript方法:

var num1 = 0, 
num2 = 0, 
num3 = 0, 
num4 = 0, 
num5 = 0, 
num6 = 0; 
function processForm(form) { 
var inputs = form.getElementsByTagName("testform"); 
var textValues = {}; 
for(var x = 0; x < inputs.length; x++) { 
    if(inputs[x].type != "text") { 
     continue; 
    } 
    textValues[inputs[x].name] = inputs[x].value; 
} 

num1 = textValues['number1']; 
num2 = textValues['number2']; 
num3 = textValues['number3']; 
num4 = textValues['number4']; 
num5 = textValues['number5']; 
num6 = textValues['number6']; 

document.write(num1); 
document.write(num2); 
document.write(num3); 
document.write(num4); 
document.write(num5); 
document.write(num6); 

return false; 
} 

當按下發送號碼:

  1. 我不明白爲什麼我得到:

    undefinedundefinedundefinedu ndefinedundefinedundefined

  2. 這些未定義的變量,爲什麼他們打印在瀏覽器的另一個選項卡中?

回答

2

你可能永遠不會使用document.write頁面加載後。它將擦除頁面和腳本。

也許你的意思是

FIDDLE

var textValues = {}; // here in case you need them elsewhere. 
function processForm(form) { 
    var output=[]; 
    for(var x = 0; x < form.elements.length; x++) { 
    var field = form.elements[x]; 
    if(field.type == "text") { 
     var val = parseInt(field.value,10); 
     if (isNaN(val)) val=0; // set the value to 0 if not a number 
     textValues[field.name] = val; 
     output.push(val); 
    } 
    } 
    document.getElementById("out").innerHTML=output.join(","); 
    return false; 
} 

加入一些<div id="out"></div>到您的網頁

+0

那我用什麼呢? DIVS? – Alpha2k 2014-09-25 14:04:02

+0

查看新的更新。 – mplungjan 2014-09-25 14:16:32

2
var inputs = form.getElementsByTagName("testform"); 

應該

var inputs = form.getElementsByTagName("input"); 
0

getElementsByTagName預計控件的tag name找到(input在這種情況下),對不name家長控制。

因此,你需要:

var inputs = form.getElementsByTagName("input"); 

此外,設置在div內容:在HTML

<div id="output" /> 

JS:

var s = "" + num1 
     + "<br />" + num2 
     + "<br />" + num3 
     + "<br />" + num4 
     + "<br />" + num5 
     ; 

document.getElementById("output").innerHTML = s; 

一個示範jsfiddle