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

如何将该段jQuery代码正确改写为原生JavaScript代码?

错误原因
  • 核心错误:原生DOM的innerHTML是可读写属性,不是方法,你用innerHTML(xxx)的形式调用,相当于尝试把属性值当函数执行,会抛出is not a function的类型错误,代码自然无法运行。
  • 差异提醒:jQuery选择器$(".slide-captions")默认会匹配页面上所有符合规则的元素批量操作,而document.querySelector(".slide-captions")只会返回匹配到的第一个元素,如果页面存在多个.slide-captions节点,直接用querySelector会遗漏其他元素。
正确写法

单元素场景

如果页面只有一个class为slide-captions的元素,直接给innerHTML属性赋值即可,和原jQuery代码效果完全一致:

document.querySelector(".slide-captions").innerHTML = 
  "<h2 class='current-title'>" + currentTitle + "</h2>" +
  "<h3 class='current-subtitle'>" + currentSubtitle + "</h3>";

你也可以用模板字符串简化拼接写法:

document.querySelector(".slide-captions").innerHTML = `
  <h2 class='current-title'>${currentTitle}</h2>
  <h3 class='current-subtitle'>${currentSubtitle}</h3>
`;

多元素场景

如果页面有多个.slide-captions元素,需要用querySelectorAll选中所有节点后遍历赋值:

const captionNodes = document.querySelectorAll(".slide-captions");
const captionHtml = `
  <h2 class='current-title'>${currentTitle}</h2>
  <h3 class='current-subtitle'>${currentSubtitle}</h3>
`;
captionNodes.forEach(node => {
  node.innerHTML = captionHtml;
});

注:原jQuery代码中给.html()传入返回字符串的回调函数,在这个场景下和直接传入字符串效果完全一致,原生JS实现不需要额外包装函数。

内容的提问来源于stack exchange,提问作者Alex Garzón

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 20:18:28