2016-10-02 66 views
0

我想要在Dom樹中獲得最後一個「可見」字符,然後在此級別拆分Dom。拆分前Javascript:如何獲得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> 

Doe的人知道該怎麼辦呢?

我的代碼:

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>'; //'&nbsp;'; 
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); 

感謝

+1

請包括你用什麼代碼來試試這個 –

+0

好了,做完後,公佈更新後的:-) –

回答

0

這裏是你如何能得到的最後一個字符:

var p = document.getElementsByClassName("myclass")[0]; 
var data = p.children[0].innerHTML 
var lastChar = data[data.length -1]; 

然後,您可以通過做替換:

p.children[0].innerHTML = lastChar; 

JsFiddle

0

這裏我的解決辦法:

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); 

JsFiddle

相關問題