0

这变得非常令人沮丧,所以我希望有人能够提供帮助。我不是一个优秀的 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”。

4

5 回答 5

3

您的代码有效,但它按以下顺序运行:

  1. fooey = '咩';

  2. 设置 jQuery(document).ready

  3. alert("值:" + fooey);

  4. 运行 jQuery(document).ready

发生这种情况是因为 JavaScript 在document准备好之前运行(并且 jQuery 事件触发)。所以只要你使用fooey之前document准备好它应该设置为'New value'. 如果您需要在 DOM 就绪$(document).ready时使用它,请在函数结束时使用它。

解释

加载网页后,页面内的 JavaScript 将运行。这将遍历代码(设置和提醒 的值fooey),设置任何事件.onclick,例如window.onresize$(document).ready(),这些事件将在特定事件发生时稍后调用。因为$(document).ready()它发生在准备好处理 DOM(文档对象模型)时。

jQuery API - ready()

在完全接收到图像等所有资产之前,不会触发此事件。

于 2013-03-18T10:21:48.947 回答
1

在 ready 函数中定义你的警报,原因是在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>
于 2013-03-18T10:22:16.413 回答
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 并且fooon的值page loadingval1

如果单击按钮,b1则它的值变为val2. 您可以通过单击按钮检查此值b2

于 2013-03-18T10:29:50.860 回答
0

ready 子句的重点是等到文档完全准备好后再做任何事情。通过在该事件之外添加代码,它将(可能)在就绪事件之前加载。

于 2013-03-18T10:25:49.923 回答
-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>
于 2013-03-18T10:25:42.210 回答