这变得非常令人沮丧所以我希望有人能够提供帮助。我不是一个伟大的JavaScript或JQuery开发人员(更多的后端人),但我已经搜索了高和低的解决方案,似乎没有任何帮助。这是我的问题的简化版......
<script language="JavaScript" type="text/javascript">
fooey = 'baaa';
jQuery(document).ready(function($) {
fooey = 'New value';
});
alert("value: " + fooey); // I need this to be 'New value'
</script>
如何更改JQuery块中的fooey变量,然后从JQuery块外部访问此新值。所以我期待警报弹出窗口显示“新值”而不是“baaa”。
答案 0 :(得分:3)
您的代码有效,但它按以下顺序运行:
fooey ='baaa';
设置jQuery(文档).ready
alert(“value:”+ fooey);
运行jQuery(document).ready
这种情况正在发生,因为JavaScript在document
准备好之前运行(并且jQuery事件触发)。因此,如果您在fooey
准备好之前使用document
,则应将其设置为'New value'
。如果您需要在 DOM准备就绪时使用它,请在$(document).ready
函数的末尾使用它。
<强>解释强>
加载网页后,会运行页面中的JavaScript。这将通过代码(设置和提醒fooey
的值),设置任何事件,例如.onclick
,window.onresize
或$(document).ready()
,这些事件稍后会在特定时间调用事件发生。对于$(document).ready()
,当DOM(文档对象模型)准备好进行处理时就会发生这种情况。
在完全接收到所有资产(如图像)之前,不会触发此事件。
答案 1 :(得分:1)
在就绪功能中定义警报,原因是在document.ready
功能之前执行警报。
<script language="JavaScript" type="text/javascript">
fooey = 'baaa';
jQuery(document).ready(function($) {
fooey = 'New value';
alert("value: " + fooey); // I need this to be 'New value'
});
</script>
答案 2 :(得分:1)
javascript :
var foo;
$(function() {
// this is your jquery.ready() function. I have write it in another way
foo = 'val1'
alert(foo);
});
function fun(){
foo = 'val2';
alert(foo);
}
function fun2(){
alert(foo);
}
HTML代码:
<input type="button" id="b1" value="b1" onclick="fun()" >
<input type="button" id="b2" value="b2" onclick="fun2()">
现在,此处foo变为a global variable
,foo
上page loading
的值为val1
。
如果您点击按钮b1
,则其值变为val2
。您可以点击按钮b2
来检查此值。
答案 3 :(得分:0)
ready子句的重点是等到文档完全准备好后再做任何事情。通过在该事件之外添加代码,它将在就绪事件之前加载(可能)。
答案 4 :(得分:-1)
<script language="JavaScript" type="text/javascript">
// executed when browser interprets this line
fooey = 'baaa'; // (1st to be executed)
jQuery(document).ready(function($) {
// executed after few seconds , when DOM is ready. (3rd one to be executed)
fooey = 'New value';
});
// executed when browser interprets this line (2nd one to be executed)
alert("value: " + fooey);
</script>
最后,fooey值为New value
,但在您发出警报时则不会
你可以等到DOM准备就绪。
<script language="JavaScript" type="text/javascript">
fooey = 'baaa';
jQuery(document).ready(function($) {
fooey = 'New value';
});
var interval = setInterval(function () {
if ( jQuery.isReady ) {
clearInterval(interval);
alert("value: " + fooey);
}
},10)
</script>