Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.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 第二个实时更新图形未使用多个d3图表更新_Javascript_Html_Graphics_D3.js_Live - Fatal编程技术网

Javascript 第二个实时更新图形未使用多个d3图表更新

Javascript 第二个实时更新图形未使用多个d3图表更新,javascript,html,graphics,d3.js,live,Javascript,Html,Graphics,D3.js,Live,有没有人曾经遇到过这样的问题:在两个单独的html容器中运行两个实时更新图,并且只有一个图更新了新数据?当页面上只有一个图形(任意一个图形)时,所有图形都工作,但当有两个图形时,两个图形都工作(它们是交互的),但其中一个不使用实时数据更新 我使用d3生成两个图表作为两个对象,并将每个图表放在一个单独的容器中(我有一个单独的脚本用于生成名为SomeChart.js的图表),然后在每个图表上调用updatedata方法: 我运行以下两个代码来创建变量:firstChart(在容器ID FirstCh

有没有人曾经遇到过这样的问题:在两个单独的html容器中运行两个实时更新图,并且只有一个图更新了新数据?当页面上只有一个图形(任意一个图形)时,所有图形都工作,但当有两个图形时,两个图形都工作(它们是交互的),但其中一个不使用实时数据更新

我使用d3生成两个图表作为两个对象,并将每个图表放在一个单独的容器中(我有一个单独的脚本用于生成名为SomeChart.js的图表),然后在每个图表上调用updatedata方法:

我运行以下两个代码来创建变量:firstChart(在容器ID FirstChartContainerID中)secondChart(在容器ID SecondChartContainerID中)

然后使用SomeChart.js中的“update”方法更新每个图表

this.updateData = function(newData) {
    j = data.length;
    for(i = 0; i < newData.length; i++){
        data[j] = {"time": parseDate(newData[i].time), "data": +(newData[i].data)}
        j++;
    }
    redrawAxesContext(true); redrawYAxesFocus(true);
    redrawLines();
    $(container).trigger('LineGraph:dataModification')
}
this.updateData=函数(newData){
j=数据长度;
对于(i=0;i
这听起来像是范围界定问题或类似问题,其中一个图形没有正确引用。我们必须查看完整的代码(最好是类似的代码)才能进一步帮助您。您好,很抱歉回复太晚。我发现了错误,这与没有正确引用图形无关。这与我使用“if/elseif语句”测试传入数据有关,但忘记了第三个“else”条件。由于数据通常符合第三个“else”条件,因此没有添加数据,因此图形也没有更新。感谢您建议jsfiddle并回复@larskothoff!下次我会这么做的!
this.updateData = function(newData) {
    j = data.length;
    for(i = 0; i < newData.length; i++){
        data[j] = {"time": parseDate(newData[i].time), "data": +(newData[i].data)}
        j++;
    }
    redrawAxesContext(true); redrawYAxesFocus(true);
    redrawLines();
    $(container).trigger('LineGraph:dataModification')
}