Мне нужно добавить сообщение внутри этого элемента с помощью JavaScript.
<div id="messagePanel">
</div>
Вот Javascript
var calc = document.getElementById('form');
calc.addEventListener('submit', calculateAndPrintRisk);
var total;
var riskTotal;
var age;
var bmi;
var diet;
var diabetes;
function calculateRisk() {
age = document.querySelector('input[name="age"]:checked').value;
bmi = document.querySelector('input[name="bmi"]:checked').value;
diabetes = document.querySelector('input[name="diabetes"]:checked').value;
diet = document.querySelector('input[name="diet"]:checked').value;
age = parseInt(age);
bmi = parseInt(bmi);
diabetes = parseInt(diabetes);
diet = parseInt(diet);
total = age + bmi + diabetes + diet;
return total;
};
function calculateAndPrintRisk() {
var riskTotal = calculateRisk();
var message;
var panel = document.getElementById("messagePanel");
if (total <= 15) {
var para = document.createElement("p");
var node = document.createTextNode("This is new.");
para.appendChild(node);
var element = document.getElementById("messagePanel");
element.appendChild(para);
} else if (total <= 25) {
alert("medium");
} else {
alert("high");
}
}
Этот элемент Div скрыт, поэтому он появляется только при отображении сообщения. Целью кода является: Когда нажата кнопка расчета, функция calculateRisk() будет вычислять значение каждого ответа (возраст, bmi, диабет, диета), суммировать их все вместе, и если общее значение <= 15, сообщение должно отображаться в поле. Этот флажок должен быть скрыт до нажатия кнопки расчета и показывается только после этого. Когда поле отображается, сообщение внутри этого окна должно отображаться и должно оставаться там до тех пор, пока я не буду снова нажимать вычисление.
#messagePanel{
width:600px;
height:150px;
border:1px solid black;
visibility: hidden;
Любая помощь будет очень оценена, поскольку Im все еще noob с javascript. Спасибо
Я думаю, что это то, что вам нужно:
if (total <= 15) {
var para = document.createElement("p");
var node = document.createTextNode("This is new.");
para.appendChild(node);
var element = document.getElementById("messagePanel");
element.appendChild(para);
}
Взято из: https://www.w3schools.com/js/tryit.asp?filename=tryjs_dom_elementcreate
Как заметил кто-то в комментариях, вам также необходимо удалить класс css, скрытый от messagePanel. Вы можете сделать это и в JavaScript.
display: none
скрывает элемент и удаляет его из потока. Любой контент внутри него также будет невидим. Вам нужно будет удалить этот display: none
из div, чтобы сделать эту работу.
При желании вы можете сделать высоту div 0, вывести ее из поля зрения и/или установить visibility: hidden
, который скрывает содержимое, но не удаляет элемент из потока, позволяя части содержимого снова быть видимыми. Когда вы делаете это, вы можете поместить добавленный абзац, чтобы сделать его видимым.
Вы можете установить свойство CSS для этого div с помощью JavaScript, попробуйте это
function calculateAndPrintRisk() {
var riskTotal = calculateRisk();
var message;
var panel = document.getElementById("messagePanel");
// hide this div by default
panel.style.display = "block";
if (total <= 15) {
panel.innerHTML = "<p>Your results show that you currently have a low risk of developing diabetes. However, it is important that youmaintain a healthy lifestyle in terms of diet and exercise.</p>";
// display the div
panel.style.display = "block";
} else if (total <= 25) {
alert("medium");
} else {
alert("high");
}
}
panel.style.display = "block";
должен это исправить. Вы можете легко установить, как установить свойства CSS в JS.display
что-то другое, чемnone
.