Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript删除特定HTML实体(breadcrumb)的最后一个实例_Javascript_Regex_Entities_Breadcrumbs - Fatal编程技术网

使用javascript删除特定HTML实体(breadcrumb)的最后一个实例

使用javascript删除特定HTML实体(breadcrumb)的最后一个实例,javascript,regex,entities,breadcrumbs,Javascript,Regex,Entities,Breadcrumbs,我需要删除的最后一个实例 > 发件人: 但是,经过几次迭代后,我在一行中得到了多个>>>之间没有链接,您可以这样将包装成一个span:,然后执行(span:last).remove() 这将导致一个更干净的解决方案,几乎没有额外的标记 用CSS代替javascript的解决方案怎么样 CSS .link { display: inline-block; } .link:after { content: ' \003e'; } .link:last-of-typ

我需要删除的最后一个实例

>
发件人:

但是,经过几次迭代后,我在一行中得到了多个>>>之间没有链接,您可以这样将
包装成一个span:
,然后执行
(span:last).remove()


这将导致一个更干净的解决方案,几乎没有额外的标记

用CSS代替javascript的解决方案怎么样

CSS

.link {
    display: inline-block;
}

.link:after {
    content: ' \003e';
}

.link:last-of-type:after {
    content: '';
}
HTML

<div class="link"> <a href="#">Crumb 1</a> </div>
<div class="link"> <a href="#">Crumb 2</a> </div>
<div class="link"> <a href="#">Crumb 3</a> </div>


请参见

如果您可以编辑标记,我将推荐khalid13的答案。否则,您可以尝试使用showdev的注释来选择文本节点,或者像这样对其进行黑客攻击:

//where b is your `<b>` element:
var links = b.innerHTML.split('&gt;')
links.pop()
b.innerHTML = links.join('&gt;')
//其中b是``元素:
var links=b.innerHTML.split(“”)
links.pop()
b、 innerHTML=links.join(“”)

我在这里所做的是根据'>'字符将菜单拆分为一个JS数组,然后删除数组的最后一个元素并将其重新连接在一起。

如果您真的想在纯javascript中执行此操作,可以执行以下操作:

// pass the node before where you want to look for the ">"
function removeTrailingGt(start) {
    var node = start.nextSibling;
    while (node && node.nodeType === 3) {
        if (node.nodeValue.indexOf(">") !== -1) {
            node.nodeValue = node.nodeValue.replace(">", "");
            break;
        }
        node = node.nextSibling;
    }
}
它从包含对象中的最后一个链接开始,然后搜索以下所有文本节点并删除找到的第一个“>”


工作演示:

这可能会有帮助:您使用jQuery吗?这是一个很好的解决方案。我认为使用
  • 而不是带有类的div更优雅(更简短),如本例所示:
    //where b is your `<b>` element:
    var links = b.innerHTML.split('&gt;')
    links.pop()
    b.innerHTML = links.join('&gt;')
    
    // pass the node before where you want to look for the ">"
    function removeTrailingGt(start) {
        var node = start.nextSibling;
        while (node && node.nodeType === 3) {
            if (node.nodeValue.indexOf(">") !== -1) {
                node.nodeValue = node.nodeValue.replace(">", "");
                break;
            }
            node = node.nextSibling;
        }
    }