$(document).ready(function() {
var v = $("input[name=link]").val();
$('p').on('click', function () {
console.log(v);
console.log('hello');
})
});
上面是我写的一段jQuery/JS代码。它应该在输入字段中获取值,并在我单击段落时将其打印到控制台。
我已经将 v
声明为全局变量,但它没有打印到控制台。只有当我将 var v
声明放入函数中使其成为局部变量时,它才有效。为什么会这样?我认为全局变量总是应该在整个代码中起作用。请就此教育我。
最佳答案
这不是范围问题,v
从您作为事件处理程序提供给 jQuery 的回调中是完全可见的。
您的代码的问题是 v
会在文档准备好后立即被评估。如果您更改输入的值,v
不会更改,如果它最初为空,则它会保持为空。 v
不是某种指向输入字段的指针,当输入更改时它没有理由更改。
要确保使用点击时字段的值,请使用以下代码:
$(document).ready(function() {
$('p').on('click', function () {
var v = $("input[name=link]").val();
console.log(v);
console.log('hello');
})
});
关于javascript - jQuery/Javascript 全局和局部变量混淆 - 基础,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15721449/