You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何在页面首次加载时处理表单预填值并渲染计算结果

解决方法

你只需要在现有JS代码中补充一行主动调用showMsg()的逻辑即可实现需求,原因是当前showMsg()仅绑定了输入框的键盘输入事件,页面加载时没有主动执行,自然不会计算预填值的结果。

更稳妥的实现方式是监听DOM加载完成事件后再调用函数,避免JS加载时DOM还未解析完成导致找不到元素报错,修改后的完整JS代码如下:

let name = "pizza";
document.getElementById("name").innerHTML = name;

function showMsg() {
  var many = document.getElementById('howMany').valueAsNumber;
  var weight = document.getElementById('weight').valueAsNumber;
  var water = document.getElementById('water').valueAsNumber;
  var yeast = document.getElementById('yeast').valueAsNumber;
  var oil = document.getElementById('oil').valueAsNumber;
  var salt = document.getElementById('salt').valueAsNumber;
  let myText = "<p><hr><p>The method is simple, but takes some ... and so on...";

  document.getElementById('intro').innerHTML = 'So you want to make ' + many + ' pizza of ' + weight + 'g each, here is what you need:<p>';
  document.getElementById('Flour').innerHTML = 'Flour: ' + ((many * weight) / (100 + water) * 100).toFixed(0) + 'g';
  document.getElementById('Water').innerHTML = 'Water: ' + ((many * weight) / (100 + water) * (water - oil)).toFixed(0) + 'g';
  document.getElementById('Salt').innerHTML = 'Salt: ' + (((many * weight) / (100 + water) * 100) / 100 * salt).toFixed(1) + 'g';
  document.getElementById('Oil').innerHTML = 'Oil: ' + (((many * weight) / (100 + water) * 100) / 100 * oil).toFixed(1) + 'g';
  document.getElementById('Yeast').innerHTML = 'Yeast: ' + (((many * weight) / (100 + water) * 100) / 100 * yeast).toFixed(2) + 'g';
  document.getElementById('more').innerHTML = myText;
}

// 新增代码:DOM全部加载完成后自动执行计算
document.addEventListener('DOMContentLoaded', showMsg);

如果你的JS代码本身就放在HTML内容的末尾,也可以直接在JS最后加一行showMsg(),效果是一样的。

内容的提问来源于stack exchange,提问作者yello

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:09:03