Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.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 UndefinedError:list对象没有未定义的元素_Javascript_D3.js_Flask_Jinja2 - Fatal编程技术网

Javascript UndefinedError:list对象没有未定义的元素

Javascript UndefinedError:list对象没有未定义的元素,javascript,d3.js,flask,jinja2,Javascript,D3.js,Flask,Jinja2,我在运行应用程序时出现此错误,我不知道问题出在哪里 以下是我的html代码: <select name="sel" onChange="myGraphFunction(this.value)"> {% for abs in absolute %} <option value="{{abs.id|safe}}">{{abs.imp}}</option> {% endfor %} </select> 下面是我的javascript代码,我从中获取se

我在运行应用程序时出现此错误,我不知道问题出在哪里

以下是我的html代码:

<select name="sel" onChange="myGraphFunction(this.value)">
{% for abs in absolute %}
<option value="{{abs.id|safe}}">{{abs.imp}}</option>
{% endfor %}
</select>
下面是我的javascript代码,我从中获取select的值,以便加载一些数据:

function myGraphFunction(dd){
var testdata = {{absolute[dd].d|safe}}

nv.addGraph(function() {

var width = 500,
    height = 500;

var chart = nv.models.pieChart()
    .x(function(d) { return d.key })
    //.labelThreshold(.08)
    //.showLabels(false)
    .color(d3.scale.category10().range())
    .width(width)
    .height(height)
    .donut(true)
.labelType("percent");

chart.pie
    .startAngle(function(d) { return d.startAngle -Math.PI/2 })
    .endAngle(function(d) { return d.endAngle -Math.PI/2 });

  //chart.pie.donutLabelsOutside(true).donut(true);

  d3.select("#test2")
      //.datum(historicalBarChart)
      .datum(testdata)
    .transition().duration(1200)
      .attr('width', width)
      .attr('height', height)
      .call(chart);
nv.utils.windowResize(chart.update);
return chart;
});
当我尝试在testdata中加载绝对[dd].d时,问题就出现了

我试过这样做:

if(typeof dd === 'undefined'){
var testdata = {{absolute[0].d|safe}}
}else{
var testdata = {{absolute[dd].d|safe}}
}

但是我得到了相同的错误…

dd
是一个Javascript名称,但在呈现模板时没有设置它
dd
是Jinja2
未定义的对象,渲染失败

您可以在函数外部设置
testdata
列表,然后在函数内部引用它:

var absolute = {{absolute|tojson|safe}}
function myGraphFunction(dd){
    var testdata = absolute[dd].d

我使用了
tojson
过滤器来确保
absolute
正确地转换为有效的JavaScript文本。

您确定您没有尝试访问大于数组长度的索引吗?
var absolute = {{absolute|tojson|safe}}
function myGraphFunction(dd){
    var testdata = absolute[dd].d