问题描述
我已经编码了从JSON显示数据的函数,并且在下拉列表中有不同的函数,因此用户可以选择要查看的内容。
<div class="ex-basic-2">
<label for="Charts">Sort your Data:</label>
<select name="Charts" id="chartData_Chage" onchange="changeData(this)">
<option value="1">Top 5 Countries - Heights Cases</option>
<option value="2">Top 5 Countries - Heights Deaths</option>
<option value="3">Top 5 Countries - Most Recovered</option>
<option value="4">All Countries - Cases</option>
</select>
<div class="container">
<canvas id="chart" style="height: 400px ; width: 800px;"></canvas>
</div> <!-- end of container -->
</div>
JS:
var menu = document.getElementById("chartData_Chage")
menu.addEventListener("onchange",changeData)
function changeData(menu)
{
if (menu.value == '1')
{
createBarChart()
}
else if (menu.value == '2')
{
createBarChartMostDeaths()
}
else if (menu.value == '3')
{
createBarChartMostRecoverys()
}
}
当我选择下拉框时,方法可以正常工作,但是当我将其移开并将鼠标悬停在栏聊天数据上时,数据会发生变化(不同的人会被调用)
有什么想法吗?
解决方法
您需要从选择项中删除onchange="changeData(this)"
也就是change
不是onchange
您还可以使用this
:
function changeData() {
if (this.value == '1') createBarChart();
else if (this.value == '2') createBarChartMostDeaths()
...
const createBarChart = () => {
console.log("create")
}
const createBarChartMostDeaths = () => {
console.log("create most deaths")
}
const createBarChartMostRecoverys = () => {
console.log("create most recoveries")
}
function changeData() {
if (this.value == '1') {
createBarChart()
} else if (this.value == '2') {
createBarChartMostDeaths()
} else if (this.value == '3') {
createBarChartMostRecoverys()
}
}
window.addEventListener("load",function() {
const menu = document.getElementById("chartData_Change")
menu.addEventListener("change",changeData); // "change" not "onchange"
menu.value=1;
createBarChart()
})
<div class="ex-basic-2">
<label for="Charts">Sort your Data:</label>
<select name="Charts" id="chartData_Change">
<option value="1">Top 5 Countries - Heights Cases</option>
<option value="2">Top 5 Countries - Heights Deaths</option>
<option value="3">Top 5 Countries - Most Recovered</option>
<option value="4">All Countries - Cases</option>
</select>
<div class="container">
<canvas id="chart" style="height: 400px ; width: 800px;"></canvas>
</div>
<!-- end of container -->
</div>
,
您只需要在select标签中设置事件,就像这样
<select id="sel" onchange='changeData(this)'>
这是一个完整的示例:(https://jsfiddle.net/eaxv0o12/)