Javascript jQuery值拾取
这是代码:Javascript jQuery值拾取,javascript,jquery,Javascript,Jquery,这是代码: <input type="text" id="name" /> <script> var name = $("#name").val(); </script> 我得到空字符串使用: <input type="text" id="name" /> <script> $(document).on('keyup', '#name', function(){ name = $(this).val()
<input type="text" id="name" />
<script>
var name = $("#name").val();
</script>
我得到空字符串使用:
<input type="text" id="name" />
<script>
$(document).on('keyup', '#name', function(){
name = $(this).val();
});
</script>
$(文档).on('keyup','#name',function(){
name=$(this.val();
});
这将仅在键入值后将
#name
的值分配给变量name
。这将不起作用,因为Chrome控制台不知道您的JavaScript值是什么,它们的作用域不是全局的。您需要在脚本标记中写入console.log(name),或在console(和赋值)中声明name变量并记录该变量。您需要在键入后调用$(“#name”).val(),否则,当页面加载时,它将被加载,您将得到一个空字符串,因为此时输入为空。在解释脚本时,会立即分配name
变量,如果您在文本框中键入不同的值,该变量不会更改。此处的变量“name”仍然不是全局变量,Chrome控制台仍然无法访问它。作为最终解决方案,您的解决方案是正确的(我猜),但不是他解释的问题。因为他在这里不使用var name
,所以该变量实际上是全局变量,可以从任何地方访问,包括控制台。@Chris-Susanoh13是正确的,我故意省略了var
,这样它就可以在全球范围内使用。-在Chrome/Firebug/console.jsFiddle沙盒中键入console.log(name)<代码>名称仍然是全局的,但您不能直接从浏览器控制台访问它。:)事实上,这不是问题所在。由于name
不是在本地范围中声明的,因此它实际上是全局的。但是,从文本字段中拉出name
的脚本将在页面加载后立即运行,并且在用户有时间在文本字段中键入任何内容之前很久,这意味着它将是空的。明白了,这个答案是我的错。
<input type="text" id="name" />
<script>
$(document).on('keyup', '#name', function(){
name = $(this).val();
});
</script>