私は異なる場所からのノイズ測定データを表示するウェブサイトを作っています。各場所のデータは、騒音レベルメーターデバイスに取り込まれ、Windowsベースのアプリケーションで読み取られます。アプリケーションは、配列変数を含む.jsファイルとしてWebサーバーにデータをアップロードします。この.jsファイルは5分ごとに更新されます。
最初に、1つの測定単位のライブデータを表示するjavascriptアプリケーションを作成しました。しかし今、私はすべての場所の地図上にデータを表示する必要があります。問題は、各場所のWindowsアプリケーションが同じ名前と同じ変数を持つファイルを別の場所にだけ作成することです。私は正しいデータを読むことにいくつか問題があります。
これは私がこれまでにやったことです:同じ変数名を持つ異なる外部.jsファイル
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);
});
私はここに私の.jsファイル除去する機能を持って:Dynamically removing an external JavaScript or CSS fileを。
これは.jsファイルをロードするためのjqueryプラグインです:Include File On Demandです。
通常、初期ロードは機能します(マーカーが1つしかロードされない場合や、ロードされない場合があります)。
私が知りたいことは、まずコードを作成する方法です作業とどのようにそれを最適化するために。私はjavascriptのコードのちょうど主要部分を掲示したが、それが必要な場合は、私はすべてのコードを提供することができます。任意の助けをありがとう。
これはおそらくこれを実行する最善の方法です...しかし、私の制限は、これを実行するサーバーが必ずしもサーバー側のスクリプトを持っているとは限りません。だから私はjavascriptに限られている。
私は今、何をしましたか...私は1つの測定点から外部jsファイルを置き換え、次に5秒後に2番目の測定点からファイルを置き換えます。したがって、ある測定ポイントのファイルが別のポイントのファイルを上書きすることはありません。そしてそれは魅力のように働く... –