Javascript 具有相同变量名的不同外部.js文件

Javascript 具有相同变量名的不同外部.js文件,javascript,jquery,Javascript,Jquery,我正在制作一个网站,显示来自不同地点的噪声测量数据。每个位置的数据在声级计设备上捕获,然后使用基于windows的应用程序读取。然后,应用程序将数据作为.js文件上传到web服务器上,其中包含一个数组变量。此.js文件每5分钟刷新一次。 我首先创建了一个javascript应用程序,用于显示单个测量单位的实时数据。但现在我需要在地图上显示所有位置的数据。问题是,每个位置上的windows应用程序只在另一个位置生成具有相同名称和相同变量的文件。我在读取正确的数据时遇到一些问题。 这就是我目前所做的

我正在制作一个网站,显示来自不同地点的噪声测量数据。每个位置的数据在声级计设备上捕获,然后使用基于windows的应用程序读取。然后,应用程序将数据作为.js文件上传到web服务器上,其中包含一个数组变量。此.js文件每5分钟刷新一次。
我首先创建了一个javascript应用程序,用于显示单个测量单位的实时数据。但现在我需要在地图上显示所有位置的数据。问题是,每个位置上的windows应用程序只在另一个位置生成具有相同名称和相同变量的文件。我在读取正确的数据时遇到一些问题。
这就是我目前所做的:

    function removejscssfile(filename, filetype){
         var targetelement=(filetype=="js")? "script" : (filetype=="css")? "link" : "none" //determine element type to create nodelist from
         var targetattr=(filetype=="js")? "src" : (filetype=="css")? "href" : "none" //determine corresponding attribute to test for
         var allsuspects=document.getElementsByTagName(targetelement)
         for (var i=allsuspects.length; i>=0; i--){ //search backwards within nodelist for matching elements to remove
          if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(filename)!=-1)
           allsuspects[i].parentNode.removeChild(allsuspects[i]) //remove element by calling parentNode.removeChild()
         }
        }

    function updateData(){
    var numberOfNoiseSniffers = noiseSniffers.length-1;
    var j = 0;
    for (i=0;i<=numberOfNoiseSniffers;i++) {
        file = '../'+ noiseSniffers[i] + "/" + "CurrentMeasurement.js";
        $.include(file,function(){
            laeq[j] = currentMeas[1][1];
            lastUpdate[j] = currentMeas[0][1];
            if (j==numberOfNoiseSniffers){
                updateMarkers();
            }
            removejscssfile(file[0], "js");
            j++;
        });
    }

    t=setTimeout(function() { updateData() }, 300000);
}


    $(function (){
    map = new google.maps.Map(document.getElementById("gMap"), myOptions);
    //noiseSniffers is an array where I have save all the folder names of different measurement locations
    var numberOfNoiseSniffers = noiseSniffers.length-1;
    var j = 0;
    for (i=0;i<=numberOfNoiseSniffers;i++) {
        var file = '../'+ noiseSniffers[i] + "/" + "CurrentMeasurement.js";
        //I am using include plugin for jquery to include files because it has a callback for when a file is actually loaded
        $.include(file,function(){
            //a set of global arrays that keep the data from the loaded file and this data is then displayed in google maps markers
            laeq[j] = currentMeas[1][1];
            lastUpdate[j] = currentMeas[0][2];
            latitude[j] = systemstats[12][5];
            longitude[j] = systemstats[11][6];
            //checking to see if I am in the process of including the last file
            if (j==numberOfNoiseSniffers){
                //a function that creates google maps markers
                createMarkers();
            }
            //after that I remove the files that were just included and read
            removejscssfile(file, "js");
            j++;
        });
    }
    setTimeout(function() { updateData() }, 300000);
    });
函数removejscssfile(文件名,文件类型){
var targetelement=(文件类型==“js”)?“脚本”:(文件类型==“css”)?“链接”:“无”//确定要从中创建节点列表的元素类型
var targetattr=(文件类型==“js”)?“src”:(文件类型==“css”)?“href”:“无”//确定要测试的相应属性
var allsuspects=document.getElementsByTagName(targetelement)
对于(var i=allsuspects.length;i>=0;i--){//在节点列表中向后搜索要删除的匹配元素
if(allsuspects[i]&&allsuspects[i].getAttribute(targetattr)!=null&&allsuspects[i].getAttribute(targetattr).indexOf(filename)!=1
allsuspects[i].parentNode.removeChild(allsuspects[i])//通过调用parentNode.removeChild()删除元素
}
}
函数updateData(){
var numberOfNoiseSniffers=noiseSniffers.length-1;
var j=0;

对于(i=0;i你可以试试某种形式的

我完全不理解你的问题,但是你可以试试这个

//将代码放入匿名函数中并立即执行

(function(){

   //your javascript codes 
   //create variable with same names here 
   //

})();

我想你需要某种类似的解决方案

基本上,在服务器端加载数据,然后在将其返回到客户端之前将其包装在方法调用中。您的响应应该如下所示:

var location_data = [1,2,3,4]
updateLocation('location_id', location_data) 
现在,您可以在客户端脚本中定义updateLocation()函数。现在,每当您需要新数据时,都可以创建新的“script”标记,其中src指向服务器端。加载响应时,将使用正确的参数调用updateLocation()


我希望这足够清楚

这可能会起作用,但我没有固定数量的测量位置。你可能知道如何克服这一点吗?这可能是最好的方法……但我的局限性是,运行它的服务器不一定有服务器端脚本。所以我只使用javascript。
所以我现在做了什么是…我从一个测量点替换了一个外部js文件,然后5秒钟后我从第二个测量点替换了文件,依此类推。所以一个测量点的文件永远不会覆盖另一个测量点的文件。它就像一个符咒一样工作。。。