在jQuery中共享函数之间的变量

时间:2016-05-29 14:49:02

标签: javascript jquery

我想用setInterval函数分享我的变量str。它需要构建传递给PHP脚本的整个URL。它可以正常使用ajax函数并且GET参数传递给php脚本,但是我在使用setInterval函数时遇到了一些麻烦。我不知道在这两个函数之间共享相同的str变量。我在下面附上我的代码:

    $(function () {
    $(document).ready(function () {
        var ultimox;
        var ultimoy;
        $('#list li a').on('click',function() {
      var str = $(this).data('driver');

        $.ajax({

                url: "live-data.php" + str,
                type: 'get',
                success: function(DatosRecuperados) {
                $.each(DatosRecuperados, function(i,o){
//some body of function
                });

                setx(DatosRecuperados[(DatosRecuperados.length)-1].x);
                sety(DatosRecuperados[(DatosRecuperados.length)-1].y);

                $('#container').highcharts({
//this part draws chart

        }});

           });  
    });
          setInterval(function () {
                $.get( "live-data.php?Consultar=1" + str , function( UltimosDatos ) {
//this part draws updated chart
                }
           });}, 1000);


          function getx(){return ultimox;}
          function gety(){return ultimoy;}
          function setx(x){ultimox=x;}
          function sety(y){ultimoy=y;}


}); 

2 个答案:

答案 0 :(得分:2)

在JavaScript中,范围是指代码的当前上下文。范围可以是全局或本地定义的。理解JavaScript范围是编写优秀JavaScript的关键。您需要了解变量/函数的可访问位置。

Javascript范围可以被认为是函数作用域。您应该使用setInterval()功能并将其移至$(document).ready(function() { ... });内。由于var str;在该函数$(document).ready(function() { ... });中声明,因此函数setInterval现在可以读取str

除非您需要,否则我建议不要污染全局命名空间。我的意思是var str;不在$(document).ready(function() { ... });之外。将变量保存在您需要的位置。

答案 1 :(得分:1)

您可以在JQuery中拥有一个全局变量,请尝试以下示例。

<script>
   var str = "";

   $(document).ready(function() {

    //do something with 'str'
    //e.g. str = 'Some value';

   });

   function setInterval()
   {
      //do something with 'str'
      //e.g. str = 'Some other value';
   }
</script>