2012-10-04 14 views
22

Tôi đã giải quyết vấn đề của tôi nhưng không thể trả lời nó bản thân mình kể từ khi tôi quá mới vào trang web này:"container không được định nghĩa" Google biểu đồ

Hóa ra tôi cần thiết để sử dụng như sau:

chart = new google.visualization.PieChart(document.getElementById('pie_today_div')); 

Tôi đã sử dụng JQuery để truy cập phần tử, $('#pie_today_div'). Tính đến nay là điểm bằng chứng thực tế là các nhà xây dựng PieChart phải có mã JS tiêu chuẩn, document.getElementById('pie_today_div')

Có lẽ cái gì khác đang xảy ra, nhưng thay đổi cách tôi truy cập vào yếu tố container sửa mã của tôi

vấn đề ban đầu THAM KHẢO CHO GIẢI PHÁP CỦA TÔI

Tôi gặp phải lỗi "Vùng chứa không được xác định" khi tôi đang cố gắng khởi tạo đối tượng Google PieChart.

Tôi đã xác thực trang của mình tại http://validator.w3.org/ và tôi nhận được biểu ngữ màu xanh lục đẹp cho biết nó xác thực.

Tôi không nhận được lỗi js khi tải trang. Cuộc gọi Ajax của tôi đang thực hiện một chuyến đi đầy đủ với dữ liệu tôi muốn từ DB.

Đây là HTML của tôi

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 
     <link href="/css/note.css?10022012" rel="stylesheet" type="text/css" media="screen"> 
     <script type="text/javascript" language="javascript" src="/call/js/jquery-1.7.2.min.js"></script> 
     <script type="text/javascript" src="https://www.google.com/jsapi"></script> 
     <script type="text/javascript">google.load('visualization', '1.0', {'packages':['corechart']});</script> 
     <script type="text/javascript" language="javascript" src="/call/js/init.js?10042012-2"></script> 
     <title>Call Stats</title> 
    </head> 
    <body> 
     <a href="#" id="pie_today_link">Today Stats</a> 
     <div id="pie_today_div"></div> 
    </body> 
</html> 

đây là js:

function drawPieChartToday() { 

    $.post('/call/ajax.php5',{ 
     action:'pieToday' 
    }, function(ticketData) { 
     var data = new google.visualization.DataTable(); 
     data.addColumn('string', 'Count'); 
     data.addColumn('number', 'Topic'); 
     for (var key in ticketData){ 
      data.addRow([key, ticketData[key]]); 
     } 
     options = { 
      title: 'Issue Topics' 
     }; 
     alert($('#pie_today_div').attr('id')); 
     chart = new google.visualization.PieChart($('#pie_today_div')); 
     chart.draw(data, options); 
    },'json');  
} 

đây là mã gỡ lỗi của tôi để đảm bảo yếu tố đã được tìm thấy: alert($('#pie_today_div').attr('id')); < - thông báo "pie_today_div"

+1

lý do là bộ chọn jquery trả về một tập hợp các phần tử phù hợp (mảng), ngay cả khi chọn id duy nhất. – abidibo

+0

đây là một thông tin rất hữu ích, tôi cần phải nhớ nó cho phần còn lại của cuộc sống CNTT của tôi. –

Trả lời

28

Tôi không phải là một fan hâm mộ jquery, nhưng tôi nghĩ rằng $ ('# pie_today_div') trả về một tập hợp các yếu tố phù hợp. Tính toán thuộc tính hoạt động vì (từ jquery documentation) nó "lấy giá trị của một thuộc tính cho phần tử đầu tiên trong tập các phần tử phù hợp".

Vì vậy, cố gắng

chart = new google.visualization.PieChart($('#pie_today_div')[0]); 

hoặc trực tiếp

chart = new google.visualization.PieChart(document.getElementById('pie_today_div')); 
+1

làm thế nào để sử dụng tên lớp herer? – Gowri

+1

biểu đồ = new google.visualization.PieChart ($ ('. Class-name') [0]); – abidibo

-1

Chỉ muốn đề cập, điều này xảy ra đối với tôi sau một sai lầm đơn giản. Tôi đã thay đổi

var data = new google.visualization.DataTable(huh); 

như sau trong một nỗ lực để thay đổi kiểu biểu đồ:

var data = new google.visualization.BarChart(huh); 

nhưng điều này là hoàn toàn sai, bạn thay đổi bảng xếp hạng mà bạn đề cập đến các container:

var chart = new google.visualization.ComboChart(document.getElementById('chart_div')); 
1

Phải có dòng nơi bạn tải các loại hình ảnh bạn muốn có trong trang web của mình.Có vẻ như đây là

google.load("visualization", "1", {packages: ["corechart"]}); 

Ở đây tôi đang tải gói corechart. Đặt dòng này làm dòng đầu tiên sau trong thẻ <script> bên trong trang HTML của bạn như index.html. Điều đó sẽ giải quyết vấn đề của anh ta.

8

Một lỗi container được chính xác điều đó, Người ta tìm kiếm các ví dụ ID :

var chart = new google.visualization.PieChart(document.getElementById('chart_div')); 

bạn sẽ nhận được lỗi này “container không được định nghĩa” cho Charts Google nếu bạn đang thiếu rằng ID Vì vậy Div với id chart_div đó sẽ sửa lỗi này