JSFiddle - React, Tailwind, and code Playground
JavaScript
function walk(node, fn) {
if (node) {
var child = node.firstChild;
while (child) {
if (fn(child)) return true;
if (walk(child, fn)) return true;
child = child.nextSibling
}
}
}
function sub_html_str(str, num){
var tmpEle = document.createElement('div');
tmpEle.innerHTML = str;
walk(tmpEle, function(node) {
if (node.nodeType === 3) {
var value = node.nodeValue;
if (num > 0) {
if (value.length <= num) {
num -= value.length;
} else {
node.nodeValue = value.substr(0, num);
num = 0;
}
} else {
var parent = node.parentNode;
parent.removeChild(node);
if (!parent.firstChild) {
parent.parentNode.removeChild(parent);
}
}
}
});
return tmpEle.innerHTML;
}
function sub_html_str_rset(str, num) {
var tmpEle = document.createElement('div');
tmpEle.innerHTML = str;
walk(tmpEle, function(node) {
if (node.nodeType === 1) {
console.log(node);
if (!node.firstChild) {
node.parentNode.removeChild(node);
}
} else if (node.nodeType === 3) {
var value = node.nodeValue;
if (num > 0) {
if (value.length <= num) {
var parent = node.parentNode;
parent.removeChild(node);
if (!parent.firstChild) {
parent.parentNode.removeChild(parent);
}
num -= value.length;
} else {
node.nodeValue = value.substr(num);
num = 0;
}
...