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

JavaScript实现打字机效果时修改末尾字符颜色报错如何解决?

错误原因

你代码中的letters数组存储的是纯字符串,letters[letters.length - 1]取到的是字符串'X',只有DOM元素才有style属性可以修改样式,普通字符串不存在style对象,因此调用lastLetter.style.color会抛出类型错误。你可以在alert和console.log中正常输出该值,是因为这两个操作只是读取字符串本身的值,没有访问不存在的style属性。

解决方法

要实现单个字符修改颜色的效果,需要将目标字符用HTML标签包裹后通过innerHTML插入到DOM中,不能直接操作innerText的纯文本内容。修改后的可运行代码如下:

let textPos = document.getElementById('js-headline');
let i = 0;

function typewriter() {
  let letters = ['C', 'o', 'd', 'e', 'X'];
  if (i < letters.length) {
    textPos.innerText += letters[i];
    i++;
    setTimeout(typewriter, 1000);
  } else if (i == letters.length) {
    // 拆分已有文本,将最后一个字符用带样式的span标签包裹
    const content = textPos.innerText;
    textPos.innerHTML = `${content.slice(0, -1)}<span style="color: red;">${content.slice(-1)}</span>`;
  }
}

typewriter();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:18:01