我試圖在單擊任意下拉列表選項時在id =「myChart」的HTML元素中繪製條形圖。我必須根據數組輸入繪製我的x和y軸數據。控制檯顯示沒有錯,但沒有顯示圖形。我的下拉列表是使用bootstrap3創建的,Chart.js版本爲2的圖表爲什麼我的條形圖不顯示(Chart.js)?
現在請假設無論用戶點擊哪個droplist選項,都會繪製相同的條形圖。我只是不知道爲什麼條形圖不顯示。
當前HTML代碼
<div class="dropdown">
<button class="btn btn-danger dropdown-toggle" type="button" data-toggle="dropdown">Retrieve Graph for Event
<span class="caret"></span></button>
<ul class="dropdown-menu" id="generatedroplist">
</ul>
</div>
<div>
<canvas id="myChart" width="1" height="1"></canvas>
</div>
電流Javascript代碼
//====== GENERATE DROPDOWN WITH BOOTSTRAP ========================
var edonebutton = document.getElementById("eventdonebutton");
edonebutton.onclick = function generatedroplist() {
$('#generatedroplist').empty();
var list = document.getElementById("generatedroplist"); //when click done button then populate
for (var h = 1; h < numberOfEvents + 1; h++){
var opt = "Event " + h;
var li = document.createElement("li");
var link = document.createElement("a");
var text = document.createTextNode(opt);
link.appendChild(text);
//link.href = "#";
li.appendChild(link);
list.appendChild(li);
}
}
//========= CREATE BAR CHART ON CLICK OF ANY OPTION ================
var xaxisarr = []; //global array
var yaxisarr = []; //global array
$('#generatedroplist li').on('click', function getgraph(){
xaxisarr = doublearrx[1]; //value in double array based on drop down list
yaxisarr = doublearry[1];
var ctx = document.getElementById("myChart");
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: xaxisarr,
datasets: [{
label: 'Workload Value',
data: yaxisarr,
backgroundColor:
'rgba(244, 81, 30, 0.5)', //change transparency here
borderColor:
'rgba(244, 81, 30, 0.5)',
borderWidth: 1
}]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero:true
}
}]
}
}
});
});
圖表繪製精細,如果我的onclick應用在一個單獨的鏈接按鈕,而不是droplist選項如下所示。當鏈接按鈕
var xaxisarr = []; //global array
var yaxisarr = [];
var retrievegraph = document.getElementById("retrievegraph");
retrievegraph.onclick = function getgraph() {
xaxisarr = doublearrx[1];
yaxisarr = doublearry[1];
var ctx = document.getElementById("myChart");
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: xaxisarr,
datasets: [{
label: 'Workload Value',
data: yaxisarr,
backgroundColor:
'rgba(244, 81, 30, 0.5)', //change transparency here
borderColor:
'rgba(244, 81, 30, 0.5)',
borderWidth: 1
}]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero:true
}
}]
}
}
});
}
嗨,約旦。非常感謝你的回覆。是的,我確實已經動態生成了我的下拉菜單,並已添加上面的代碼供您查看。你能再看看,讓我知道問題在哪裏嗎? – Edwin
此外,如果我爲每個下拉項目創建ID,則根據用戶生成的項目數量,下拉菜單中將包含儘可能多的ID。因此,例如,如果用戶點擊item2,程序應該能夠基於爲該下拉項目2設置的id自動綁定點擊事件。 – Edwin
你真棒哈哈。有效。我可以問你是否可以一次只顯示一張圖嗎?例如。點擊下拉item1後,出現一個條形圖,如果我點擊下拉item2,我想刪除繪製item1的條形圖並只繪製item2的bar char。 – Edwin