$(document).ready(function() {
var v = $("input[name=link]").val();
$('p').on('click', function () {
console.log(v);
console.log('hello');
})
});
上面是我编写的jQuery / JS代码。它应该在输入字段中获取值,并在我单击一个段落时将其打印到控制台。
我已将v
声明为全局变量,但它不会打印到控制台。它只有在我将var v
声明放入函数使其成为局部变量时才有效。为什么会这样?我认为全局变量总是应该在整个代码中工作。请教我这个。
答案 0 :(得分:4)
这不是范围问题,{j}作为事件处理程序的回调可以完全看到v
。
您的代码存在的问题是,只要文档准备就绪,就会立即评估v
。如果更改输入的值,v
不会更改,如果它最初为空,它将保持为空。 v
不是指向输入字段的某种指针,输入更改时没有理由更改。
要确保使用单击时间字段的值,请使用以下代码:
$(document).ready(function() {
$('p').on('click', function () {
var v = $("input[name=link]").val();
console.log(v);
console.log('hello');
})
});
答案 1 :(得分:0)
问题是您在更改v
textbox
值
当准备好调用时,您将textbox.i.e的值指定为空。
见下面的代码如何运作。
var v = 10;
alert("" + v);
myFunction();
function myFunction()
{
v = 20;
}
alert("" + v);