如何访问定义函数之外的变量?
我似乎无法使用jQuery点击函数中定义的变量。我知道全局变量和局部变量之间的区别,但在函数之外创建变量似乎没有帮助。如何访问定义函数之外的变量?
var $genre;
$('#search').click(function() {
$genre = $(this).attr('value');
});
console.log($genre);
必须有一些简单的解决方案,我只是没有想到。
只有2 JS值范围:功能和全球
意思就是说值是。点击回调内,将只存在被点击之后。 Undefined实际上是JS中的一个类型,意味着该变量存在但尚未赋值。
我怀疑是你认为的代码将同步执行,但是当...点击
是的,记录变量UNTIL被点击...你会看到值 –
“JS中只有2个值范围:函数和全局”,错误。还有一个块范围。 https://gist.github.com/StephanBijzitter/5dc3d2b0dd8ce959727b6184d8278875 –
Noup,let关键字可以解决JS中从未有过块范围这一事实。它也仅在EC6中实施。 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/let - 很多原因IIFE在那里用作事实上的块替代多年...... –
要指定click事件的“价值”功能点击才会被调用。因此,只有当您点击“#搜索”时才会分配该值。所以console.log语句不会有任何价值。
请尝试此操作。
var $genre;
$('#search').click(function() {
$genre = $(this).attr('value');
console.log($genre);
});
- 的代码实际上是在帮你想对付的变量,但你是不是登录到控制台的功能中到底是什么。
- 我注意到的一件事是,您还使用$(this).attr('value')访问“value”属性。如果您试图获取我认为是最初意图的输入值,则请输入Jquery has a built in function to get the value of an input.。
使我提到的这两个更改的代码如下所示!
var $genre;
$('#search').click(function() {
//sets the variable to the value of the input
$genre = $(this).val();
//prints the variable to the console everytime that the element is clicked
console.log($genre);
});
好,因为它是在一个点击事件被设置,它不会,直到你... –
是否使用'内的另一个功能/处理器console.log'触发click事件有一个值?因为你现在这样做的意思是''''''''''''''''''''当点击处理程序被触发时' – Bobface
它只会打印'undefined' –