【问题标题】:Javascript : How to get last character in Dom tree?Javascript:如何获取 Dom 树中的最后一个字符?
【发布时间】:2016-10-02 17:03:24
【问题描述】:

我想获取 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>'; //'&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); 

谢谢

【问题讨论】:

  • 请附上你用来尝试这个的代码
  • 好的,完成,更新后:-)

标签: javascript dom split character


【解决方案1】:

获取最后一个字符的方法如下:

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

然后您可以通过以下方式替换它:

p.children[0].innerHTML = lastChar;

JsFiddle

【讨论】:

    【解决方案2】:

    这是我的解决方案:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-16
      • 2011-07-07
      • 2011-08-17
      • 1970-01-01
      • 1970-01-01
      • 2018-07-16
      相关资源
      最近更新 更多