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

如何使用onkeydown函数实现摄氏度转华氏度数值更新及问题排查

问题修复方案

以下是可直接运行的修正版代码,核心修改点已标注:

<!DOCTYPE html>
<html>
<head>
<title>摄氏度转华氏度转换器
</title>
<!--add dependencies-->
<link rel="stylesheet" href="materialize/css/materialize.min.css"/>
<link rel="stylesheet" href="mystyle.css"/>
</head>
<body>
<div class="container">
<center><h5>摄氏度转华氏度</h5></center>
<!-- 修改1:事件从onkeydown改为oninput,输入变化立即触发转换 -->
<center><h5>摄氏度温度:</h5><input class="form-control"type="number" id="degrees" oninput="update()"/><br/></center>
<!-- 文案修正:原标注和实际功能不符,已改为华氏度 -->
<center><h5>华氏度温度:</h5><input class="form-control"type="number"  id="farenheit"/></center>
</div>
</body>
<script type="text/javascript">
// 修改2:getElementbyId拼写修正,b改为大写的B
let degree=document.getElementById("degrees");
let far=document.getElementById("farenheit");
function update(){
let temp=parseInt(degree.value);
// 修改3:增加空值/非法输入判断
if(isNaN(temp)){
    far.value = '';
    return;
}
let faren=1.8*temp+32;
far.value=faren;
}
</script>
</html>

错误说明

  • 核心语法错误:原代码中getElementbyId是错误写法,DOM API的标准写法为驼峰格式getElementById,大小写错误会导致无法正常获取输入框元素,后续所有操作都会失效。
  • 逻辑错误:onkeydown触发时机是按键按下的瞬间,此时输入框还未写入本次输入的内容,会出现转换结果比输入慢一步的问题,替换为oninput即可解决。
  • 体验问题:新增非法输入判断,避免输入为空、输入非数字时输出NaN的异常显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:18:03