[英]How do I send data to an element with a certain ID using JavaScript?
我使用的WebSockets接收数据的数据包需要发送到两个不同的canvas
ES与ID,即magnitude1
和magnitude2
。 这些canvas
上绘制了图形,我希望定期用新数据刷新图形。 但是,当我调用将数据发送到正确元素的函数时,我的控制台显示数据一次被发送到magnitude1
, magnitude2
一次,然后数据仅被发送到magnitude1
进行刷新。 这是我的代码:
dataCollector.onmessage = function(evt)
{
console.log("onmessage is being called");
var realData = new Float32Array(evt.data); //data is expected in the format [nodeID,(256 floats)]
setInterval(function(){readMagPacket(realData);},1000);
}
function readMagPacket(theGoods)
{
var nodeID = theGoods[0];
console.log("The node ID is " + nodeID);
var magnitude = new Array();
for(var i = 1; i < theGoods.length; i++)
{
magnitude[i-1] = theGoods[i];
}
console.log("The length of packet " + nodeID + " is " + magnitude.length);
graphMagnitude(magnitude,nodeY,freqRange);
Mag(magnitude,nodeID,freqRange);
}
function Mag(magnitude,index,freqRange)
{
console.log("Mag is called");
var magPlot = new RGraph.Bar('magnitude'+index,magnitude);
magPlot.Set('labels',freqRange);
magPlot.Set('gutter.left',100);
magPlot.Set('gutter.bottom',40);
magPlot.Set('ymax',.01);
magPlot.Set('ymin',0);
magPlot.Set('backgroun.grid',true);
magPlot.Set('numyticks',2);
magPlot.Set('title','Magnitude of Channel ' + index);
magPlot.Set('title.yaxis','Magnitude (dB)');
magPlot.Set('title.xaxis','Frequency (MHz)');
magPlot.Set('title.xaxis.pos',.2);
magPlot.Set('title.yaxis.pos',.5);
magPlot.Set('background.color','white');
magPlot.Set('colors',['green']);
magPlot.Set('hmargin',.00001);
magPlot.Draw();
}
更多详细信息:我想以浮点数的形式通过套接字获取数据包,并将其存储在realData
。 我想将其传递给一个函数,该函数将nodeID
(这是数据包中的第一个数字)与其余数据分开。 我将使用它来确定将数据发送到哪个canvas
。 在这行var magPlot = new RGraph.Bar('magnitude'+index,magnitude);
,我将nodeID
作为index
传递。 构造器的'magnitude' + index
应确定要在其中创建图形的canvas
的id
。 我认为这是错误所在。 我希望能够通过合并来刷新两个图setInterval
, readMagPacket
和Mag
,但似乎只被刷新magnitude1
只。 当我查看控制台以查看发生了什么情况时,我看到所有数据包都是首先发送的,然后再readMagPacket
。 理想情况下,我希望在通过的每个数据包上调用readMagPacket
。 有什么办法可以修复代码以实现这一目标?
每个数据包到达时,您将使用相同的数据反复调用readMagPacket。 我相信,如果删除setInterval调用,然后直接调用readMagPacket,它将按您的意愿工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.