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

如何将异步方法结果显示到innerHTML?现有代码为何innerHTML为空?

问题分析与解决

错误原因

  • 元素选择器错误:document.getElementById("#demo")写法有误,getElementById只需要传入纯ID字符串,不需要加CSS选择器的#前缀,导致找不到目标元素,无法设置innerHTML。
  • JSON对象直接赋值问题:handlePress返回的是JSON对象,直接赋值给innerHTML会显示[object Object],没法展示实际内容。
  • 多余的this调用:loadData里的this.handlePress()属于冗余写法,直接调用handlePress()即可,这里的this指向全局window,虽不报错但不符合代码规范。

修正后的代码

<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
async function handlePress(){
 const URL = "https://ewserver.di.unimi.it/mobicomp/treest/register.php"
 console.log("Sending request")
const c= await fetch(URL);
return await c.json(); 
}
function loadData(){
   handlePress().then(sids => {
    // 修正ID选择器,同时将JSON对象转为格式化字符串展示
    document.getElementById("demo").innerHTML = JSON.stringify(sids, null, 2);
  });
}
loadData()
</script>
</body>
</html>

额外优化建议

可以添加错误捕获逻辑,处理请求失败的场景:

function loadData(){
   handlePress()
   .then(sids => {
    document.getElementById("demo").innerHTML = JSON.stringify(sids, null, 2);
   })
   .catch(err => {
    document.getElementById("demo").innerHTML = `请求失败:${err.message}`;
    console.error(err);
   });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 23:35:42