javascript - 如何用跨度包裹标题的第一个单词

标签 javascript

我想实现something similar ,但要包装每个 <h1> 的第一个单词带有 <span> 的标签标签。它应该看起来像这样:

 <h1><span>This</span> is a title</h1>

我想不用插件也能完成......

最佳答案

使用 JavaScript String#repalce 方法

var tag = document.querySelector('h1');

tag.innerHTML = tag.innerHTML.replace(/^\s*\w+/, '<span style="color:red">$&</span>');
<h1>This is a title </h1>

<小时/>

仅供引用:由于它重新创建内部元素,因此它将销毁附加到其后代元素的任何处理程序。

<小时/>

更新:如果您想更新所有 h1 标记,那么您需要获取所有 h1 并迭代它们。

Array.from(document.querySelectorAll('h1')).forEach(function(ele) {
  ele.innerHTML = ele.innerHTML.replace(/^\s*\w+/, '<span style="color:red">$&</span>');
});
<h1>This is a title </h1>
<h1>This is a title </h1>
<h1>This is a title </h1>
<h1>This is a title </h1>
<h1>This is a title </h1>

关于javascript - 如何用跨度包裹标题的第一个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38672753/

相关文章:

javascript - Object.defineProperty - 函数返回对象的作用域和使用?

javascript - "Zoom"使用 JavaScript 的浏览器窗口/ View ?

javascript - 如何验证 Bootstrap 中的密码字段?

javascript - 如何在每次登录时将 url 与变量连接起来

javascript - 在当前鼠标位置的 Canvas 内添加一个 Textarea

javascript - 运行 Cordova Android 应用程序(插件)时 Assets 文件夹中出现错误

javascript - vue-resource get 请求不适用于 Laravel 5.3

javascript - Vue js 与 jquery get 的问题

javascript - 我正在尝试在提交时自动聚焦到下一个文本输入

javascript - 将 Chrome 多功能框扩展限制为我的建议