如何在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

如何在JavaScript中获取输入文本值

<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>