在一段字符串中的指定位置插入html标签,实现内容修改留痕
客户需求:实现内容修改留痕,并且鼠标移动到元素时,显示修改人和修改时间。
(其实呢本人觉得这个如果是静态的页面,或者是后端拼接好的html,都很好实现,如果让前端动态实现就......)
前端实现的方法或许有很多,我用了个比较笨的实现方式,结合后端返回的数据,实现如下:
// 用json模拟后端返回的数据
var itemList = {
word:"官方指南官方指南假设你已了解关于 HTML、CSS 和 JavaScript 的中级知识。如果你刚开始学习前端开发,将框架作为你的第一步可能不是最好的主意——掌握好基础知识再来吧!之前有其它框架的使用经验会有帮助,但这不是必需的。官方指南假设你已了解关于 HTML、CSS 和 JavaScript 的中级知识。如果你刚开始学习前端开发,将框架作为你的第一步可能不是最好的主意——掌握好基础知识再来吧!之前有其它框架的使用经验会有帮助,但这不是必需的。",
obj:[
{
s:4,
e:8,
u:'admin',
t:'2020-05-13',
type:'del',
text:'官方指南'
},
{
s:42,
e:87,
u:'admin2',
t:'2020-05-15',
type:'add',
text:'如果你刚开始学习前端开发,将框架作为你的第一步可能不是最好的主意——掌握好基础知识再来吧!'
}
]
} var word = itemList.word;
var strLength = 0;
itemList.obj.map(function(item,index){
//截取当前字符串的前后内容
var preWord = word.slice(0,item.s+strLength)
var nextWord = word.slice(item.e+strLength,word.length+strLength); //判断字符串类型,添加相应标签和class
if(item.type == 'del'){
word = preWord+"<del class='wordDel' u='"+item.u+"' t='"+item.t+"'>"+item.text+"</del>"+nextWord
strLength += 40 + item.u.length + item.t.length
}else if(item.type == 'add'){
strLength += 40 + item.u.length + item.t.length
word = preWord+"<add class='wordAdd' u='"+item.u+"' t='"+item.t+"'>"+item.text+"</add>"+nextWord
} }) $(".word").html(word) $(".wordDel").hover(function(){
//拿到当前标签的自定义属性
console.log($(this).attr("u"))
console.log($(this).attr("t"))
},function(){
//鼠标移出时的操作
}) $(".wordAdd").hover(function(){
//拿到当前标签的自定义属性
console.log($(this).attr("u"))
console.log($(this).attr("t"))
},function(){
//鼠标移出时的操作
})
最终效果如下:

在一段字符串中的指定位置插入html标签,实现内容修改留痕的更多相关文章
- java格式化字符串,在指定位置插入指定字符串,兼容中英文以及特殊字符,例如:换行,用于解决生成pdf换行问题等问题
本博客是自己在学习和工作途中的积累与总结,仅供自己参考,也欢迎大家转载,转载时请注明出处. http://www.cnblogs.com/king-xg/p/6370890.html 如果觉得对您有 ...
- js 指定位置插入html标签(可编辑div)
demo效果如下: html代码部分如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q ...
- PHP字符串指定位置插入字符串
1.substr_replace(string,replacement,start,length);需插入时设置length为0即可 string 必需.规定要检查的字符串. replacement ...
- 【转载】C#使用InsertRange方法往ArrayList集合指定位置插入另一个集合
在C#的编程开发中,ArrayList集合是一个常用的非泛型类集合,ArrayList集合可存储多种数据类型的对象.在实际的开发过程中,我们可以使用InsertRange方法在ArrayList集合指 ...
- python 提取字符串中的指定字符 正则表达式
例1: 字符串: '湖南省长沙市岳麓区麓山南路麓山门' 提取:湖南,长沙 在不用正则表达式的情况下: address = '湖南省长沙市岳麓区麓山南路麓山门' address1 = address.s ...
- matlab中fseek 移至文件中的指定位置
文章来源:https://ww2.mathworks.cn/help/matlab/ref/fseek.html?searchHighlight=fseek&s_tid=doc_srchtit ...
- String的两个API,判断指定字符串是否包含另一字符串,在字符串中删除指定字符串。
// 在字符串中删除指定字符串. String phoneNum="1795112345"; phoneNum = phoneNum.replace("17951&quo ...
- 使用PHP的strstr()函数来统计一段字符串中元音字母的个数(区分大小写)
<?php/**练习:统计一段字符串中所有元音字母的个数(区分大小写)*/$str='This is a test file.'; //原始字符串echo $str.'<br>'; ...
- Aspose.Words 将word2中的内容插入到word1中的指定位置
将word2中的内容插入到word1中的指定位置(经测试可用) 在官网找到的例子,记录一下: public static void InsertDocumentAtBookmark(string da ...
随机推荐
- C++枚举算法
枚举算法 什么是枚举? 枚举,顾名思义,就是用最笨的方法,去解决问题(暴力枚举),一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数.这两种类型经常(但不总是)重叠. 枚举 ...
- [YII2] 去除自带js,加载自己的JS,然后ajax(json)传值接值!
本想用YII2自带的JS,可是用着效果不好,想从新加载,找了好多终于实现啦!还有ajax(json)传值接值! 首先直接了当的就把YII2自带的js去掉! 把下面代码加入到/config/main.p ...
- CentOS7.7下二进制部署MySQL多版本多实例实战
第一章 需求说明 部署MySQL5.7的三个多实例环境(端口分别为3307,3308,3309) 部署MySQL5.6和8.0版本数据库实例((端口分别为3316和3326) 第二章 环境准备 1.虚 ...
- C++养成好的代码习惯
[C++小技巧] -------------------------------------------------------------#ifdef _DEBUG imwrite(" ...
- react: typescript import images alias
1.webpack.config.js resolve: { extensions: ["ts", "tsx", "js", "j ...
- 干货最实用的 Python 多线程代码框架
前言 很多地方都要用到多线程,这是我经常用的多线程代码,放在博客园记录下. 代码 from multiprocessing.pool import ThreadPool thread = 10 ite ...
- Redis 的 maxmemory 和 dbnum 默认值都是多少?对于最大值会有限制吗?
一.Redis 的默认配置 了解 Redis 的都知道,Redis 服务器状态有很多可配置的默认值. 例如:数据库数量,最大可用内存,AOF 持久化相关配置和 RDB 持久化相关配置等等.我相信,关于 ...
- 链表数据-PHP的实现
首先,链表数据的结构是: 其次,链表数据的结构特点: 随后,填充链表结构: 链表结构的数据,从链表尾部塞入数据. 最后,删除链表结构:
- scrapy爬虫实例(1)
爬虫实例 对象 阳光问政平台 目标 : 主题,时间,内容 爬取思路 预先设置好items import scrapy class SuperspiderItem(scrapy.Item): title ...
- 3.k均值的算法
一.课堂练习 # 课堂练习 from sklearn.datasets import load_iris # 导入鸢尾花数据 iris=load_iris() iris iris.keys() dat ...