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

点击ul内span元素后字体样式被重置,如何保留原有样式?

问题解决:保留点击li时内部元素的样式

问题原因

你遇到的样式丢失问题,本质是li.textContent += '!'的特性导致的:textContent会将元素内部所有HTML结构(包括带样式的<span>)转换成纯文本,拼接!后重新赋值,这直接销毁了原来的span元素,斜体样式自然就消失了。

解决方案

要保留原有DOM结构和样式,只需在li末尾追加文本节点,而非覆盖整个内容,以下是两种可行的实现方式:

方案1:使用insertAdjacentText(推荐)

该方法可直接在指定位置插入文本,完全不影响现有DOM结构:

let ul = document.querySelector('ul')

ul.addEventListener('click', function (evn) {
  let li = evn.target.closest('li');
  if (evn.target !== this) {
    // 在li末尾插入文本'!'
    li.insertAdjacentText('beforeend', '!');
  }
})

方案2:创建文本节点并追加

通过DOM API创建纯文本节点,再添加到li的子节点末尾:

let ul = document.querySelector('ul')

ul.addEventListener('click', function (evn) {
  let li = evn.target.closest('li');
  if (evn.target !== this) {
    const exclamationNode = document.createTextNode('!');
    li.appendChild(exclamationNode);
  }
})

效果验证

使用以上任意一种方法后,点击包含<span class="i">text</span>的li时,只会在末尾添加!,原有span元素的斜体样式会完整保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 08:45:28