Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery中函数间共享变量_Javascript_Jquery - Fatal编程技术网

Javascript jQuery中函数间共享变量

Javascript jQuery中函数间共享变量,javascript,jquery,Javascript,Jquery,我想与setInterval函数共享名为str的变量。它需要构建传递给php脚本的整个url。它可以与ajax函数配合使用,GET参数正在传递给php脚本,但我在使用setInterval函数时遇到了一些问题。我不知道在这两个函数之间共享同一个str变量。兹附上我的代码如下: $(function () { $(document).ready(function () { var ultimox; var ultimoy; $('#l

我想与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;}


}); 

可以在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>

var str=“”;
$(文档).ready(函数(){
//用str做点什么
//e、 g.str=‘某些值’;
});
函数setInterval()
{
//用str做点什么
//e、 g.str=‘其他值’;
}

在JavaScript中,作用域是指代码的当前上下文。作用域可以是全局定义的,也可以是局部定义的。理解JavaScript范围是编写好JavaScript的关键。您需要了解在哪里可以访问变量/函数

Javascript作用域可以被认为是函数作用域。您应该使用
setInterval()
函数,并将其移动到
$(document).ready(function(){…})中。自
var-str
在该函数
$(document).ready(function(){…})中声明
函数
setInterval
现在可以读取
str


我建议不要污染全局名称空间,除非需要。我的意思是没有
var-str
$(文档).ready(函数(){…})之外。把变量放在需要的地方

$(function(){
$(document)相同。就绪(function()
),您不需要在另一行中包装一个,这并没有解决我的问题。我仍然有一个错误,即str变量未定义在此行“$.get”(“live data.php?consulttar=1”+str,function(UltimosDatos){”没有说会,只是让你知道你不需要这样做。你得到错误是因为你在你的点击处理程序中设置了
str
一个局部变量。我已经更改了范围,正如你说的,现在它可以工作了。不知道为什么我以前遇到过一些问题。谢谢你,伙计!