如何解决"未捕获错误:容器未定义"?

时间:2015-06-29 22:05:28

标签: jquery

我试图创建动态变量,我一直在

  

未捕获错误:未定义容器

我仔细检查了所有内容 - 一行一行 - 仍然无法找到自己的错误。 我希望有人可以指出我错过了什么。

JS

  var data = {};
  var chart = {};

  for (var object in objects) {

    var total = objects[object].danger + objects[object].warning + objects[object].success ;

    data[object] = google.visualization.arrayToDataTable([

      ['Piechart' , 'Number of Skills'],
      ['danger'   , ( objects[object].danger/total )  * 100  ],
      ['warning'  , ( objects[object].warning/total ) * 100  ],
      ['success'  , ( objects[object].success/total ) * 100  ],

      ]);

    console.log( ".piechart-div-"+ object.toLowerCase() );

    var $el = $('#sa-piechart-' + object);

    $el.length ? $('#sa-piechart-' + object.toLowerCase() ) :
    $('<div id="#sa-piechart-' + object.toLowerCase() +'"></div>')
    .appendTo(".piechart-div-" + object.toLowerCase());

    // Dynamic Variables
    chart[object] = new google.visualization.PieChart($el[0]);

    // Dynamic On Click Binding
    $('.sa-report-btn-'+ object.toLowerCase() ).click(function() {
      updateInfo(object);
      chart[object].draw( data[object] , options );
    });

  }

HTML

<div class="col-xs-4 col-sm-3 col-md-3 col-lg-2 piechart-div-a">
   <div id="sa-piechart-a"></div>
</div>

1 个答案:

答案 0 :(得分:1)

首先,没有piechart-div-*附加sa-piechart div。

这样的事情应该这样做

// create a piechart object
var $el = $('#sa-piechart-' + object);

// create a piechart container
var pieChartContainer = $('<div></div>').addClass('piechart-div-' + object.toLowerCase());

// append piechart container to body (or any other container)
$('body').append(pieChartContainer);
$el = $el.length ? $('#sa-piechart-' + object.toLowerCase()) : $('<div id="#sa-piechart-' + object.toLowerCase() + '"></div>')
  .appendTo(pieChartContainer);

// create a button and append to chart container
var button = $('<input type="button" value="report" />');
pieChartContainer.append(button);

// attach click handler to the created button
$(button).click(function (chart, data, obj) {
  updateInfo(obj);
  chart.draw(data);
}.bind(null, chart[object], data[object], object)); // <--- passing variables here

这是一个演示 http://jsfiddle.net/dhirajbodicherla/6M2sH/445/