JS给DOM元素赋值innerHTML后浏览器未生效问题排查
问题根因
DOM属性名拼写错误,这是页面未更新的唯一原因:
浏览器原生DOM规范中,设置/获取元素内部HTML内容的属性为严格驼峰命名的innerHTML——inner后缀必须是全大写的HTML(H、T、M、L四个字母均大写)。
你代码里写的targetElem.innerHtml = html;将属性错写为innerHtml(T、M为小写),这行代码只是给选中的DOM元素挂载了一个自定义属性,根本没有触发浏览器内置的HTML解析、重绘流程,所以控制台能正常打印传入的HTML内容,但页面不会有任何变化。
上层的嵌套AJAX请求、加载态逻辑均无问题,不需要修改。
修复方法
仅需修正insertHtml函数中的属性名即可:
var insertHtml = function(selector,html) { var targetElem = document.querySelector(selector); console.log(html); targetElem.innerHTML = html; };
修改后重新执行,传入的HTML片段就会被浏览器正常解析,渲染到对应元素位置。
内容的提问来源于stack exchange,提问作者Kavi Palmer
相关产品推荐
相关产品推荐

