我有一个脚本可以抓取点击的'div'的'id'并将其用作变量,如下所示:
$(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()'时,它在'click'函数的括号外定义,它无法识别新定义的变量'newvar'。该脚本将继续如下:
function alignPop(){
var popH = $(newvar).height();
var popW = $(newvar).width();
为什么脚本以后不会在脚本中识别变量?可能是因为在定义变量之前立即加载整个脚本?有办法解决这个问题吗?
谢谢,请用简单的英文保留答案,因为我是这个人的新手!
答案 0 :(得分:1)
变量的范围不正确。因为它是在ready
函数内声明的,所以它包含在该函数的范围内,并且在脚本的其他地方无法看到。如果您在函数之外放置var newvar;
并在ready
函数内删除行var
上的newvar = ("#" + $(this).attr("id") + "Contact");
,则应该可以将其用作全局变量。
代码如下:
var newvar;
$(document).ready(function () {
$(".box").click(function(e){
newvar = ("#" + $(this).attr("id") + "Contact");
// ..
答案 1 :(得分:1)
“为什么脚本以后不会在脚本中识别变量?”
因为“newvar”不在alignPop函数的范围内。您需要将此变量作为参数传递。尝试:
function alignPop(elem){
var popH = $(elem).height();
var popW = $(elem).width();
...
}
并调用此函数:
alignPop(newvar);
为了获得更好的性能,您可以将elem作为jQuery对象传递而不是字符串。