找不到计算和输出的方法
Can't find the way to calculate and output it
我正在尝试从“timeSpend”和“breakTime”中获取百分比并将其存储在 fSubject、sSubject、tSubject 中并将其存储在数据集中:date[],
这样它就可以输出它,但它只给出“timeSpend”和“breakTime”的值,而不是 fSubject、sSubject、tSubject。颜色也不起作用我不知道为什么enter image description here
let timeSpend = document.querySelector("#time_spend");
let breakTime = document.querySelector("#break_time");
let fSubject = document.querySelector("#first_subjects");
let sSubject = document.querySelector("#second_subjects");
let tSubject = document.querySelector("#third_subjects");
let mostCon = document.querySelector("#first_percentage");
let secCon = document.querySelector("#second_percentage");
let thirdCon = document.queryCommandValue("#third_percentage");
let fSubjectV = (mostCon/100) * (timeSpend + breakTime);
let sSubjectV = (secCon/100)* (timeSpend + breakTime);
let tSubjectV = (thirdCon/100)* (timeSpend + breakTime);
let myChart = document.getElementById("myChart").getContext("2d");
document.querySelector("button").addEventListener("click", () => {
let pieChart = new Chart(myChart, {
type: "pie",
data: {
labels: [
"Time spend",
"Break Time",
fSubject.value,
sSubject.value,
tSubject.value,
],
datasets: [
{
label: "Plan",
data: [
timeSpend.value,
breakTime.value,
mostCon.value,
secCon.value,
thirdCon.value,
],
},
],
},
options: {},
});
});
HTML 我在其中进行输入并从
获取输入
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.7.1/chart.min.js"></script>
<link rel="stylesheet" href="CSS/main-style.css" />
<title>Student Planner</title>
</head>
<body>
<header>
<div class="title">
<h1>THE STUDENT PLANNER</h1>
</div>
<div class="sub_header">
<h3>A SIMPLE PLANNER TO ORGANISE YOUR TIME</h3>
<h3>LET'S PLAN YOUR SESSION</h3>
</div>
</header>
<main>
<input type="number" id="time_spend" class="text-box" placeholder="How much time do you have?" />
<input type="number" id="break_time" class="text-box" placeholder="how many breaks do you want to have?" /><br>
<input type="text" id="first_subjects" class="subjects-box" placeholder="Most confident subject?" /><input type="number" id="first_percentage" class="percantage_subject" placeholder="Understand percentage ">
<input type="text" id="second_subjects" class="subjects-box" placeholder="Second confident subject?" /><input type="number" id="second_percentage" class="percantage_subject" placeholder="Understand percentage ">
<input type="text" id="third_subjects" class="subjects-box" placeholder="Third subject?" /> <input type="number" id="third_percentage" class="percantage_subject" placeholder="Understand percentage ">
<br>
<button type="button" class="button">Finished</button>
<div class="container">
<canvas id="myChart"></canvas>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.7.1/chart.min.js"></script>
<script src="JS/main.js"></script>
</main>
<footer>
<p>© DK_CODE</p>
<p>12/3/2022</p>
</footer>
</body>
</html>
您需要将所有变量初始化到按钮点击的函数中,而不是在该函数之外。
您的情况是,所有变量仅在 main.js 加载时加载一次,此时您的输入字段的值将为空白。因此,您的所有变量都将加载空白值,这就是图表为空白的原因。
检查以下代码:
document.querySelector("button").addEventListener("click", () => {
let timeSpend = document.querySelector("#time_spend").value;
let breakTime = document.querySelector("#break_time").value;
let fSubject = document.querySelector("#first_subjects").value;
let sSubject = document.querySelector("#second_subjects").value;
let tSubject = document.querySelector("#third_subjects").value;
let mostCon = document.querySelector("#first_percentage").value;
let secCon = document.querySelector("#second_percentage").value;
let thirdCon = document.querySelector("#third_percentage").value;
let fSubjectV = (mostCon / 100) * (timeSpend + breakTime);
let sSubjectV = (secCon / 100) * (timeSpend + breakTime);
let tSubjectV = (thirdCon / 100) * (timeSpend + breakTime);
const canvasEle = document.createElement("canvas");
canvasEle.id = "myChart";
let myChart = canvasEle.getContext("2d");
const firstEle = document.getElementsByClassName("container")[0].children[0];
if (firstEle) {
document
.getElementsByClassName("container")[0]
.replaceChild(canvasEle, firstEle);
} else {
document.getElementsByClassName("container")[0].appendChilde(canvasEle);
}
let pieChart = new Chart(myChart, {
type: "pie",
data: {
labels: ["Time spend", "Break Time", fSubject, sSubject, tSubject],
datasets: [
{
label: "Plan",
data: [timeSpend, breakTime, mostCon, secCon, thirdCon],
backgroundColor: ["black", "red", "orange", "green", "blue"]
}
]
},
options: {}
});
});
.container{
height:500px;
width:500px;
}
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.7.1/chart.min.js"></script>
<link rel="stylesheet" href="CSS/main-style.css" />
<title>Student Planner</title>
</head>
<body>
<header>
<div class="title">
<h1>THE STUDENT PLANNER</h1>
</div>
<div class="sub_header">
<h3>A SIMPLE PLANNER TO ORGANISE YOUR TIME</h3>
<h3>LET'S PLAN YOUR SESSION</h3>
</div>
</header>
<main>
<input type="number" id="time_spend" class="text-box" placeholder="How much time do you have?" />
<input type="number" id="break_time" class="text-box" placeholder="how many breaks do you want to have?" />
<br>
<input type="text" id="first_subjects" class="subjects-box" placeholder="Most confident subject?" />
<input type="number" id="first_percentage" class="percantage_subject" placeholder="Understand percentage ">
<input type="text" id="second_subjects" class="subjects-box" placeholder="Second confident subject?" />
<input type="number" id="second_percentage" class="percantage_subject" placeholder="Understand percentage ">
<input type="text" id="third_subjects" class="subjects-box" placeholder="Third subject?" />
<input type="number" id="third_percentage" class="percantage_subject" placeholder="Understand percentage ">
<br>
<button type="button" class="button">Finished</button>
<div class="container">
<canvas id="myChart"></canvas>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.7.1/chart.min.js"></script>
<script src="JS/main.js"></script>
</main>
<footer>
<p>© DK_CODE</p>
<p>12/3/2022</p>
</footer>
</body>
</html>
我正在尝试从“timeSpend”和“breakTime”中获取百分比并将其存储在 fSubject、sSubject、tSubject 中并将其存储在数据集中:date[], 这样它就可以输出它,但它只给出“timeSpend”和“breakTime”的值,而不是 fSubject、sSubject、tSubject。颜色也不起作用我不知道为什么enter image description here
let timeSpend = document.querySelector("#time_spend");
let breakTime = document.querySelector("#break_time");
let fSubject = document.querySelector("#first_subjects");
let sSubject = document.querySelector("#second_subjects");
let tSubject = document.querySelector("#third_subjects");
let mostCon = document.querySelector("#first_percentage");
let secCon = document.querySelector("#second_percentage");
let thirdCon = document.queryCommandValue("#third_percentage");
let fSubjectV = (mostCon/100) * (timeSpend + breakTime);
let sSubjectV = (secCon/100)* (timeSpend + breakTime);
let tSubjectV = (thirdCon/100)* (timeSpend + breakTime);
let myChart = document.getElementById("myChart").getContext("2d");
document.querySelector("button").addEventListener("click", () => {
let pieChart = new Chart(myChart, {
type: "pie",
data: {
labels: [
"Time spend",
"Break Time",
fSubject.value,
sSubject.value,
tSubject.value,
],
datasets: [
{
label: "Plan",
data: [
timeSpend.value,
breakTime.value,
mostCon.value,
secCon.value,
thirdCon.value,
],
},
],
},
options: {},
});
});
HTML 我在其中进行输入并从
获取输入<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.7.1/chart.min.js"></script>
<link rel="stylesheet" href="CSS/main-style.css" />
<title>Student Planner</title>
</head>
<body>
<header>
<div class="title">
<h1>THE STUDENT PLANNER</h1>
</div>
<div class="sub_header">
<h3>A SIMPLE PLANNER TO ORGANISE YOUR TIME</h3>
<h3>LET'S PLAN YOUR SESSION</h3>
</div>
</header>
<main>
<input type="number" id="time_spend" class="text-box" placeholder="How much time do you have?" />
<input type="number" id="break_time" class="text-box" placeholder="how many breaks do you want to have?" /><br>
<input type="text" id="first_subjects" class="subjects-box" placeholder="Most confident subject?" /><input type="number" id="first_percentage" class="percantage_subject" placeholder="Understand percentage ">
<input type="text" id="second_subjects" class="subjects-box" placeholder="Second confident subject?" /><input type="number" id="second_percentage" class="percantage_subject" placeholder="Understand percentage ">
<input type="text" id="third_subjects" class="subjects-box" placeholder="Third subject?" /> <input type="number" id="third_percentage" class="percantage_subject" placeholder="Understand percentage ">
<br>
<button type="button" class="button">Finished</button>
<div class="container">
<canvas id="myChart"></canvas>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.7.1/chart.min.js"></script>
<script src="JS/main.js"></script>
</main>
<footer>
<p>© DK_CODE</p>
<p>12/3/2022</p>
</footer>
</body>
</html>
您需要将所有变量初始化到按钮点击的函数中,而不是在该函数之外。
您的情况是,所有变量仅在 main.js 加载时加载一次,此时您的输入字段的值将为空白。因此,您的所有变量都将加载空白值,这就是图表为空白的原因。
检查以下代码:
document.querySelector("button").addEventListener("click", () => {
let timeSpend = document.querySelector("#time_spend").value;
let breakTime = document.querySelector("#break_time").value;
let fSubject = document.querySelector("#first_subjects").value;
let sSubject = document.querySelector("#second_subjects").value;
let tSubject = document.querySelector("#third_subjects").value;
let mostCon = document.querySelector("#first_percentage").value;
let secCon = document.querySelector("#second_percentage").value;
let thirdCon = document.querySelector("#third_percentage").value;
let fSubjectV = (mostCon / 100) * (timeSpend + breakTime);
let sSubjectV = (secCon / 100) * (timeSpend + breakTime);
let tSubjectV = (thirdCon / 100) * (timeSpend + breakTime);
const canvasEle = document.createElement("canvas");
canvasEle.id = "myChart";
let myChart = canvasEle.getContext("2d");
const firstEle = document.getElementsByClassName("container")[0].children[0];
if (firstEle) {
document
.getElementsByClassName("container")[0]
.replaceChild(canvasEle, firstEle);
} else {
document.getElementsByClassName("container")[0].appendChilde(canvasEle);
}
let pieChart = new Chart(myChart, {
type: "pie",
data: {
labels: ["Time spend", "Break Time", fSubject, sSubject, tSubject],
datasets: [
{
label: "Plan",
data: [timeSpend, breakTime, mostCon, secCon, thirdCon],
backgroundColor: ["black", "red", "orange", "green", "blue"]
}
]
},
options: {}
});
});
.container{
height:500px;
width:500px;
}
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.7.1/chart.min.js"></script>
<link rel="stylesheet" href="CSS/main-style.css" />
<title>Student Planner</title>
</head>
<body>
<header>
<div class="title">
<h1>THE STUDENT PLANNER</h1>
</div>
<div class="sub_header">
<h3>A SIMPLE PLANNER TO ORGANISE YOUR TIME</h3>
<h3>LET'S PLAN YOUR SESSION</h3>
</div>
</header>
<main>
<input type="number" id="time_spend" class="text-box" placeholder="How much time do you have?" />
<input type="number" id="break_time" class="text-box" placeholder="how many breaks do you want to have?" />
<br>
<input type="text" id="first_subjects" class="subjects-box" placeholder="Most confident subject?" />
<input type="number" id="first_percentage" class="percantage_subject" placeholder="Understand percentage ">
<input type="text" id="second_subjects" class="subjects-box" placeholder="Second confident subject?" />
<input type="number" id="second_percentage" class="percantage_subject" placeholder="Understand percentage ">
<input type="text" id="third_subjects" class="subjects-box" placeholder="Third subject?" />
<input type="number" id="third_percentage" class="percantage_subject" placeholder="Understand percentage ">
<br>
<button type="button" class="button">Finished</button>
<div class="container">
<canvas id="myChart"></canvas>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.7.1/chart.min.js"></script>
<script src="JS/main.js"></script>
</main>
<footer>
<p>© DK_CODE</p>
<p>12/3/2022</p>
</footer>
</body>
</html>