如何在JavaScript中获取输入文本值
如何在JavaScript中获取输入文本值如何在JavaScript中获取输入文本值,javascript,text,input,get,Javascript,Text,Input,Get,如何在JavaScript中获取输入文本值 <script language="javascript" type="text/javascript"> lol = document.getElementById('lolz').value; function kk(){ alert(lol); } </script> <body> <input type="text" name="enter" class="en
<script language="javascript" type="text/javascript">
lol = document.getElementById('lolz').value;
function kk(){
alert(lol);
}
</script>
<body>
<input type="text" name="enter" class="enter" value="" id="lolz"/>
<input type="button" value="click" OnClick="kk()"/>
</body>
lol=document.getElementById('lolz').value;
函数kk(){
警报(lol);
}
当我把
lol=document.getElementById('lolz').value代码>在函数kk()
之外,如上图所示,它不起作用,但当我把它放进去时,它就起作用了。有人能告诉我为什么吗?编辑:
将javascript移动到页面的末尾,以确保在访问DOM(html元素)之前加载它们(javascript以快速加载为结尾)
使用var textInputVal=document.getElementById('textInputId').value声明变量,如示例所示强>
对输入和元素使用描述性名称(使您自己的代码以及其他人查看代码时更容易理解)
要查看有关getElementById的更多信息,请参阅:
使用jQuery之类的库可以使javascript的使用更加容易,从而了解更多信息:
不要以这种方式使用全局变量。即使这样做可行,这也是一种糟糕的编程风格。您可能会以这种方式无意中覆盖重要数据。改为这样做:
<script type="text/javascript">
function kk(){
var lol = document.getElementById('lolz').value;
alert(lol);
}
</script>
请注意,script
元素必须跟在它引用的input
元素后面,因为如果元素已经被解析和创建,则只能使用getElementById
查询它们
这两个示例都可以工作,并在jsfiddler中进行了测试
Edit:我删除了language=“javascript”
属性,因为它已被弃用。见:
语言=[]
。此属性指定此元素内容的脚本语言。它的值是该语言的标识符,但由于这些标识符不是标准的,所以该属性支持类型
及
不推荐使用的元素或属性已被较新的构造过时。[…]在将来的HTML版本中,不推荐使用的元素可能会过时。[…]本规范包括一些示例,说明如何避免使用不推荐使用的元素。[……]
由于lol现在是局部变量,所以最好使用var关键字来声明任何变量
这可能适用于您:
function kk(){
var lol = document.getElementById('lolz').value;
alert(lol);
}
请注意,这一行:
lol = document.getElementById('lolz').value;
位于标记上实际的
元素之前:
<input type="text" name="enter" class="enter" value="" id="lolz"/>
您还可以将脚本移动到页面末尾。将所有脚本块移动到HTML
末尾是目前避免此类引用问题的标准做法。它还倾向于加速页面加载,因为加载和解析所需时间较长的脚本是在HTML(大部分)显示之后进行处理的。当lol
在其外部定义时,函数不起作用的原因是,JavaScript首次运行时尚未加载。因此,getElementById
将返回null
()
您已经找到了最明显的解决方案:通过在函数内部调用getElementById
,DOM将在调用函数时加载并准备就绪,元素将像您期望的那样被找到
还有一些其他的解决方案。一种是等待整个文档加载,如下所示:
<script type="text/javascript">
var lolz;
function onload() {
lolz = document.getElementById('lolz');
}
function kk(){
alert(lolz.value);
}
</script>
<body onload="onload();">
<input type="text" name="enter" class="enter" value="" id="lolz"/>
<input type="button" value="click" onclick="kk();"/>
</body>
jQuery将函数作为参数。该函数将在DOM就绪后立即运行。第二个示例还用于绑定kk的onclick
处理程序,而不是在HTML中内联执行该操作。
<script type="text/javascript">
function kk(){
var lol = document.getElementById('lolz').value;
alert(lol);
}
</script>
<body onload="onload();">
<input type="text" name="enter" class="enter" id="lolz" value=""/>
<input type="button" value="click" onclick="kk();"/>
</body>
函数kk(){
var lol=document.getElementById('lolz').value;
警报(lol);
}
使用此以上所有解决方案都很有用。他们使用了这条线
lol = document.getElementById('lolz').value;
函数内部函数kk()
我的建议是,您可以从另一个函数调用该变量fun\u inside()
它在构建复杂项目时非常有用。
<script>
function subadd(){
subadd= parseFloat(document.forms[0][0].value) + parseFloat(document.forms[0][1].value)
window.alert(subadd)
}
</script>
<body>
<form>
<input type="text" >+
<input type="text" >
<input type="button" value="add" onclick="subadd()">
</form>
</body>
函数subadd(){
subadd=parseFloat(document.forms[0][0].value)+parseFloat(document.forms[0][1].value)
窗口警报(子添加)
}
+
document.getElementById('id').value这不起作用的原因是变量不会随文本框而改变。当它最初运行代码时,它会获取文本框的值,但之后就不再调用它了。但是,在函数中定义变量时,每次调用函数时,变量都会更新。然后它会提醒现在等于文本框输入的变量。
<input type="password"id="har">
<input type="submit"value="get password"onclick="har()">
<script>
function har() {
var txt_val;
txt_val = document.getElementById("har").value;
alert(txt_val);
}
</script>
函数har(){
var txt_val;
txt_val=document.getElementById(“har”).value;
警报(txt_val);
}
如何在JavaScript中获取输入文本值
var文本框;
函数onload(){
//获取价值。
textbox=document.getElementById('textbox');
}
函数showMessage(){
//在警报()中显示消息
警报(“消息为:“+textbox.value”);
}
还需要注意的是,为了快速加载,javascript应该放在页面底部,而不是像上面示例中所示的html之前。然后它还会识别给定的html元素。非常清楚的解释,谢谢!是的,这是一个选择。就快速加载而言,在这种情况下不会有太大区别。不管有没有这种情况,我认为我们应该提供最佳实践:)@user156159我刚刚纠正了一个错误:您发布的行不会导致将未定义的分配给lol
,这会导致js错误。请参阅bfavarettos的答案和我的评论以获得完整的解释,他更快了!:)第一种解决方案的第二个问题是,它读取输入值的时间与单击按钮的时间不一致。在第二个解决方案中,您使用jQuery的val()方法解决了这个问题。。。当问一个纯粹的jscript问题时,为什么要使用jquery来回答?jquery很好,但肯定不是每个网页都绝对需要。也许是有用的
lol = document.getElementById('lolz').value;
function fun_inside() {
lol = document.getElementById('lolz').value;
}
function kk() {
fun_inside();
alert(lol);
}
<script>
function subadd(){
subadd= parseFloat(document.forms[0][0].value) + parseFloat(document.forms[0][1].value)
window.alert(subadd)
}
</script>
<body>
<form>
<input type="text" >+
<input type="text" >
<input type="button" value="add" onclick="subadd()">
</form>
</body>
<input type="password"id="har">
<input type="submit"value="get password"onclick="har()">
<script>
function har() {
var txt_val;
txt_val = document.getElementById("har").value;
alert(txt_val);
}
</script>