Jquery 脚本中无法识别JavaScript变量
我有一个脚本,它获取单击的“div”的“id”,并将其用作变量,如下所示:Jquery 脚本中无法识别JavaScript变量,jquery,variables,var,Jquery,Variables,Var,我有一个脚本,它获取单击的“div”的“id”,并将其用作变量,如下所示: $(document).ready(function(){ $(".box").click(function(e){ var newvar = ("#" + $(this).attr("id") + "Contact"); alignPop(); if(status==0){ $("#popBG").css({ "opacity": "0.5"
$(document).ready(function(){
$(".box").click(function(e){
var newvar = ("#" + $(this).attr("id") + "Contact");
alignPop();
if(status==0){
$("#popBG").css({
"opacity": "0.5"
});
$("#popBG").fadeIn("slow");
$(newvar).fadeIn("slow");
popupStatus = 1;
}
现在,到目前为止,一切都正常运行,但当脚本启动函数“alignPop()”时,它无法识别新定义的变量“newvar”,该函数是在“click”函数的括号外定义的。脚本将继续类似以下内容:
function alignPop(){
var popH = $(newvar).height();
var popW = $(newvar).width();
为什么脚本不能识别脚本中的变量?可能是因为在定义变量之前,一次加载了整个脚本?有办法解决这个问题吗
谢谢,请用简单的英语回答,因为我对这东西还不熟悉 变量的作用域不正确。因为它是在
ready
函数中声明的,所以它包含在该函数的范围内,在脚本的其他地方看不到。如果你想,在你的函数之外,放一个var newvar
并在ready
函数中,删除newvar=(“#“+$(this).attr(“id”)+“Contact”)行上的var
代码>,您应该能够将其用作全局变量
代码如下所示:
var newvar;
$(document).ready(function () {
$(".box").click(function(e){
newvar = ("#" + $(this).attr("id") + "Contact");
// ..
“为什么脚本以后不能识别脚本中的变量?”
因为“newvar”不在alignPop函数的范围内。您需要将此变量作为参数传递。尝试:
function alignPop(elem){
var popH = $(elem).height();
var popW = $(elem).width();
...
}
这样调用这个函数:
alignPop(newvar);
为了获得更好的性能,您可以将elem作为jQuery对象而不是字符串传递。@gdoron显示了相关的固定代码。马蒂亚斯没问题。别忘了在正确答案上标出正确答案。欢迎来到StackOverflow:)