[英]Javascript : How to get last character in Dom tree?
我想獲取Dom樹中的最后一個“可見”字符,然后在此級別拆分Dom。
分割前樣本:
<div class="myclass"><label>mon label</label><span class="spanclass"></span></div>
^---- last visible character
分割后的樣本:
<div class="myclass"><label>mon labe</label></div>
<div class="myclass"><label>l</label><span class="spanclass"></span></div>
母鹿的人知道怎么做嗎?
我的代碼:
function reverseString(str)
{
return (str === '') ? '' : reverseString(str.substr(1)) + str.charAt(0);
}
var domString = ' <div class="myclass"><label>mon label</label><span class="spanclass"></span></div>'; //' ';
var domSpace = domString.replace(/ +/g, ' ');
var revDom = reverseString(domSpace);
var re = /((\>[^\<\/]+\/?\<)+)*(\s+|\;[a-zA-Z#0-9]+\&|(\>\/[a-zA-Z]+\<)+|[^\>])/i;
var found = revDom.match(re);
var str1 = domSpace.substr(0, domSpace.length - found[0].length);
var str2 = domSpace.substr(domSpace.length - found[0].length, found[0].length);
console.log(str1 + ' ------- ' + str2);
謝謝
這是獲取最后一個字符的方法:
var p = document.getElementsByClassName("myclass")[0];
var data = p.children[0].innerHTML
var lastChar = data[data.length -1];
然后,您可以執行以下操作來替換它:
p.children[0].innerHTML = lastChar;
這是我的解決方案:
function reverseString(str)
{
return (str === '') ? '' : reverseString(str.substr(1)) + str.charAt(0);
}
function removeClosed(str)
{
var tothreat = str;
re = /<(\w+)[^>]*>[^<]*<\/(\w+)>/gi;
while (tothreat.match(re))
{
var tothreat = tothreat.replace(re, function(str, p1, p2, offset, s) {
if (p1 === p2) return '';
return str;
});
}
return tothreat;
}
var domString = '<div class="myclass"><label>mon label</label><span class="spanclass"></span></div>';
var domSpace = domString.replace(/ +/g, ' ');
var revDom = reverseString(domSpace);
var re = /((>[^<\/]+\/?<)+)*(\s+|\;[a-zA-Z#0-9]+\&|(>\/[a-zA-Z]+<)+|[^>])/gi;
var found = revDom.match(re);
var str1 = domSpace.substr(0, domSpace.length - found[0].length);
var str2 = domSpace.substr(domSpace.length - found[0].length, found[0].length);
var str = removeClosed(str1);
str = str.replace(/<\w+\/>/gi, '');
str = str.replace(/>[^<]+</gi, '><');
found = str.match(/(<\w+[^>]*>)+/gi);
var part2 = found[0] + str2;
str = removeClosed(str2);
found = str.match(/(<\/\w+>)*/gi);
var part1 = str1 + found[1];
console.log(part1)
console.log(part2);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.