我已经花了大约一个小时左右的时间试图收集jscript / jquery中的变量范围,以及所有帐户,我的代码应该工作。现在我只想从函数中读取全局变量。我的代码不起作用,现在它非常基本。最终我需要操纵全局变量,但这里一步一步:
var fooBar;
fooBar = "blah";
$('.var').click(function (fooBar) {
alert(fooBar);
});
HTML:
<span class="var">(Button Test)</span>
它在警告框中返回[Object object]。我真的希望它会让Blah回归我。我知道这是一个非常基本的问题,但我发现的所有例子都非常复杂,而且我很难把它归结为我需要的基本部分。非常感谢任何帮助。
答案 0 :(得分:5)
您需要将其作为参数删除,如下所示:
var fooBar;
fooBar = "blah";
$('.var').click(function () {
alert(fooBar);
});
您看到[Object object]
的原因是传递给函数的第一个参数(以及jQuery中的任何其他事件处理程序)是the jQuery event
object,并且该参数的名称相同意味着您的函数内{ {1}}指的是它,因为它更本地化。你的变量在里面是可用的,它现在被一个更本地的版本覆盖了,因为使用的是同一个名字...就像我上面那样删除它你就会全部设置。
答案 1 :(得分:2)
从函数中删除fooBar,因为它正在创建一个将被使用的局部范围变量,而不是全局变量。
$('.var').click(function () {
alert(fooBar);
});
答案 2 :(得分:1)
Javascript中的全局变量实际上是window
的成员,如果您与局部变量(例如fooBar
参数)存在范围冲突,那么您可以完全限定全局fooBar
变量像这样:
var fooBar;
fooBar = "blah";
$('.var').click(function (fooBar) {
alert(window.fooBar);
});
事实上,我要总是用window
完全限定全局变量,以避免任何混淆或冲突。实际上,我会写出这样的全部内容:
window.fooBar = "blah";
$('.var').click(function (fooBar) {
alert(window.fooBar);
});
答案 3 :(得分:0)
您的功能参数中不需要fooBar
。这就足够了:
var fooBar;
fooBar = "blah";
$('.var').click(function() {
alert(fooBar);
});
你的代码太多了,全是:)