2014-09-25 82 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