Добавление элемента <p> в DIV с помощью JavaScript

1

Мне нужно добавить сообщение внутри этого элемента с помощью 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. Спасибо

  • 0
    Здесь на самом деле нет ясного вопроса. Вы спрашиваете, как сделать div видимым? panel.style.display = "block"; должен это исправить. Вы можете легко установить, как установить свойства CSS в JS.
  • 0
    оно будет отображаться только в том случае, если вы установите для display что-то другое, чем none .
Показать ещё 6 комментариев
Теги:

3 ответа

0

Я думаю, что это то, что вам нужно:

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.

  • 0
    Это очень близко к тому, что мне нужно. Но по какой-то причине сообщение «Это новое» отображается и удаляется сразу после. Мне нужно, чтобы он оставался там до тех пор, пока снова не будет нажата кнопка «Рассчитать». Я обновлю свой пост, чтобы показать полный код
  • 0
    Да, пожалуйста.
Показать ещё 1 комментарий
0

display: none скрывает элемент и удаляет его из потока. Любой контент внутри него также будет невидим. Вам нужно будет удалить этот display: none из div, чтобы сделать эту работу.

При желании вы можете сделать высоту div 0, вывести ее из поля зрения и/или установить visibility: hidden, который скрывает содержимое, но не удаляет элемент из потока, позволяя части содержимого снова быть видимыми. Когда вы делаете это, вы можете поместить добавленный абзац, чтобы сделать его видимым.

0

Вы можете установить свойство 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");
     }

  }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню