Javascript 将变量从$(document).ready(function(){})传递到$(window).load(function(){}

Javascript 将变量从$(document).ready(function(){})传递到$(window).load(function(){},javascript,jquery,Javascript,Jquery,试想一下,如果我在document.ready上创建了通过率,我如何将该变量传递到窗口。load $(文档).ready(函数(){ jQuery(函数(){ 变量问题计数=$('.question body')。长度; 风险值问题百分比=(1/问题计数)*100; 变量颜色百分比=(300/问题计数); var百分比通过率=0; $('.answers input')。单击(函数(){ if($(this).data('clicked')==false){ $(此).data('clicke

试想一下,如果我在
document.ready
上创建了
通过率
,我如何将该变量传递到
窗口。load

$(文档).ready(函数(){
jQuery(函数(){
变量问题计数=$('.question body')。长度;
风险值问题百分比=(1/问题计数)*100;
变量颜色百分比=(300/问题计数);
var百分比通过率=0;
$('.answers input')。单击(函数(){
if($(this).data('clicked')==false){
$(此).data('clicked',true);
var old_height=$('.percent solve').css('height');
var new_height=parseInt(旧_height)+color_percent;
通过率+=问题通过率;
如果(通过率>100){
通过率=100;
}
$(“.percentshow”).html(“%”+通过率);
$('.count').text(通过百分比);
$('.percent solve').css('height',new_height+'px');
$('.count')。每个(函数(){
$(this).prop('计数器',通过率-问题通过率)。动画({
计数器:$(this.text())
}, {
持续时间:500,
放松:"摇摆",,
步骤:功能(现在){
$(this.text(Math.ceil(now));
}
});
});
如果(数学单元(通过率)=100){
$('.end test').css('color','#ff9803');
}
}
var q_count=$(this).parents('.question body').attr(“id”);
q_计数=parseInt(q_计数)+1;
$('问题正文').removeClass('开放式问题');
$。滚动到($('#'+q#U计数),500{
onAfter:function(){
$(“#”+q_计数).addClass('开放式问题');
}
});
});
});
});
$(窗口)。加载(函数(){
doughnutWidget.options={
容器:$(“#容器”),
宽度:100,
身高:100,
类别:“myClass”,
截止:50
};
render(data());
设置间隔(初始,2000年);
});
函数init(){
render(data());
}
函数数据(){
风险值数据={
待定:{
瓦尔:数学四舍五入(通过百分比),
颜色:“#57B4F2”,
},
交付:{
瓦尔:数学四舍五入(通过百分比),
颜色:“#6DED5C”
},
延迟:{
瓦尔:数学四舍五入(通过百分比),
颜色:“#E63329”,
}
};
返回数据;

}
将百分比更新为a并在窗口中读取。加载

编辑: 我检查了您的网站…您的问题与变量范围完全无关…您正在为容器元素执行脚本,该元素在HTML DOM中不存在,因此脚本失败


只需使用globalscope变量-

//全局范围变量
var doughnutWidget={/*虚拟js对象,因为我不知道doughnutWidget库*/
选项:“”,
render:function(){
返回null;
}
},
通过率;
//全球视野变光器
$(文档).ready(函数(){
jQuery(函数(){
通过率=0;
});
});
$(窗口)。加载(函数(){
doughnutWidget.options={
容器:$(“#容器”),
宽度:100,
身高:100,
类别:“myClass”,
截止:50
};
render(data());
设置间隔(初始,2000年);
log(“请参阅?无错误,fnc data()返回“+data()+”(应该是正确的)”);
});
函数init(){
render(data());
}
函数数据(){
风险值数据={
待定:{
瓦尔:数学四舍五入(通过百分比),
颜色:“#57B4F2”,
},
交付:{
瓦尔:数学四舍五入(通过百分比),
颜色:“#6DED5C”
},
延迟:{
瓦尔:数学四舍五入(通过百分比),
颜色:“#E63329”,
}
};
返回数据;
}

尝试将
var percent\u pass=0;
放在
$(document).ready()函数的外部。
您的问题在于变量的范围。
由于它是在ready()的回调函数中定义的,因此它仅在其相应的作用域中可用

通过将
var percent\u pass=0;
置于回调函数之外,您可以将其作用域更改为全局

var percent\u pass;//放置在任何函数外部的变量声明=>全局变量
$(文档).ready(函数(){
jQuery(函数(){
通过百分比=0;//只需指定一个值即可。
});
});
$(窗口)。加载(函数(){
doughnutWidget.options={
容器:$(“#容器”),
宽度:100,
身高:100,
类别:“myClass”,
截止:50
};
render(data());
设置间隔(初始,2000年);
});
函数init(){
render(data());
}
函数数据(){
风险值数据={
待定:{
瓦尔:数学四舍五入(通过百分比),
颜色:“#57B4F2”,
},
交付:{
瓦尔:数学四舍五入(通过百分比),
颜色:“#6DED5C”
},
延迟:{
瓦尔:数学四舍五入(通过百分比),
颜色:“#E63329”,
}
};
返回数据;

}
让我进一步解释:“这是我的噩梦”-是的
jQuery(function(){jQuery(function(){
看起来噩梦操作是打字错误,2 jQuery(function())!!我无法处理nested:Dit的一个上帝帮助。无论如何,那个地方的jQuery函数是无用的。嗨,伙计,请你再次检查我的更新。这可能有助于找到解决方案。已经有2个有效答案,但看起来你要么不明白我们在说什么,要么你忽略了它…你定义了本地v函数中的变量。这些局部变量只能在该函数和其他嵌套函数中访问。这些变量不能“级别更高”…您必须在顶层定义这些变量-全局范围-正如我发布的w3schools链接-阅读此链接,您就会明白。全局变量应该可以在您的代码中的任何位置访问。非常感谢Adam k。我在聊天中发布了一些其他问题,我感谢您的帮助。小心我以前尝试过此操作,遗憾的是通过率没有变化数学及格。四舍五入(及格百分比)。