如何使用 javascript/jquery 使文本显示为所需的 innerHTML

How to make a text appear with a desired innerHTML using javascript/jquery

有一个按钮和一个 h2 标签。 h2 标签的 visibilty=hidden.

当按钮被点击时,我想调用一个函数来计算成本并相应地改变 h2 的内部HTML,然后改变它的 visibility=visible。

HTML:

<main class="form-signin">
    <form>
      <div class="card">
             <label for="inputAdult">Enter number of adults</label><input type="number" id="inputAdult" class="form-control" placeholder="No. of adults" required>
            <label for="inputChildren">Enter number of children (4-12yo)</label><input type="number" id="inputChildren" class="form-control" placeholder="No. of children" required>
           <button type="button" onclick="showCost()" id="btn3">Calculate my cost</button>
           <h2 class="changeCost">Your total cost: [=11=]</h2>
        </div>
    </form>
  </main>

JavaScript / jQuery :

 $("h2").css("visibility","hidden");

function calculateCost(){
  var a = $("#inputAdult").val();
  var c = $("#inputchildren").val();

   if (((a+c)%3==0)||((a+c)%3==1)) {
    var rooms = (a+c)/3;
    }
   else {
    var rooms = ((a+c)/3)+1;
    }
  var cost = rooms*300;
  return cost;
}

function showCost() {
  var display = "Your total cost is: $" + calculateCost();
  var x = $("h2");
  x.value = display;
   $("h2").css("visibility","visible");
}

尝试 x.text(display) 而不是设置 value。这会更改元素的 innerText。如果您想设置其 HTML 内容,请使用 x.html(display).

value 访问器用于普通 HTML 元素对象,不适用于 jQuery 包装对象。

除此之外,您永远不应仅通过标签名称访问标签。始终给它某种 class 名称或 ID。你已经给了它 changeCost class,所以你可以做 $("h2.changeCost") 而不是 $("h2").

为避免获得 NaN,请执行以下操作: Javascript 区分大小写,因此替换行

var c = $("#inputchildren").val();

var c = $("#inputChildren").val();

我还会考虑在 if 和 else 范围内声明房间变量,以便在计算时可以访问它:请参阅下面的完整功能:

function calculateCost(){
  var a = $("#inputAdult").val();
  var c = $("#inputChildren").val();
  var rooms = 0;
  
   if (((a+c)%3==0)||((a+c)%3==1)) {
      rooms = (a+c)/3;
    }
   else {
      rooms = ((a+c)/3)+1;
    }
  var cost = rooms*300;
  return cost;
}