Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从javascript函数外部获取表单输入?_Javascript - Fatal编程技术网

如何从javascript函数外部获取表单输入?

如何从javascript函数外部获取表单输入?,javascript,Javascript,我正在尝试使用javascript显示表单输入。所以我使用了这个JS代码块 <html> <head> </head> <body> <script> var text = document.form1.name.value; function printText(){ document.write(text); } </script> <form name=form1> <inp

我正在尝试使用javascript显示表单输入。所以我使用了这个JS代码块

<html>
<head>
</head>  
<body>    
<script>
var text = document.form1.name.value;
function printText(){   
    document.write(text);
}
</script>
<form name=form1>
<input type="text" id="txt" name="name"   ><br><br>
<input type="button" value="Submit!" onClick="printText();" >
</form>
</body>
</html>

var text=document.form1.name.value;
函数printText(){
文件。书写(文本);
}


但上面的代码不起作用。它给了我不精确的输出

但当我尝试在代码下面工作时

<html>
<head>
</head>  
<body> 
<script>
function printText(){   
var text = document.form1.name.value;
    document.write(text);
}
</script>
<form name=form1>
<input type="text" id="txt" name="name"   ><br><br>
<input type="button" value="Submit!" onClick="printText();" >
</form>
</body>
</html>

函数printText(){
var text=document.form1.name.value;
文件。书写(文本);
}


所以我的问题是为什么我们不能使用这个
var text=document.form1.name.value函数外的语句


谢谢。

您在文档加载时为变量
text
赋值,起初它是空的。在第二种情况下,您在某个按钮上调用函数,单击该按钮可以获取表单值并将其打印出来,您的问题只是计时:JavaScript在文档中的位置执行。因此,您访问的DOM可能没有完全构建

因此,在第一个示例中,当执行行
text=…
时,解析器不知道表单元素。此外,您的命令不会创建对该值的引用,而只是复制它


但是,在第二种情况下,只定义函数(这很好),并在调用函数时(对变量
text
求值)表单元素存在,一切正常。

在窗口加载时分配表单的值,此时表单未初始化,这就是为什么它会给未定义的值

如果要使var文本成为全局文本,请执行以下操作:

var text = "";
function printText(){   
    text = document.form1.name.value
    document.write(text);
}
如果您将脚本放在最后,那么它将初始化值null,因为在开始时,该值将是输入类型的null

因此,您需要在开始时初始化变量,然后将值放入其中。

处理得很好