Javascript 从一个字符串中提取一个单词,从一个特定的单词开始直到结束

Javascript 从一个字符串中提取一个单词,从一个特定的单词开始直到结束,javascript,html,svg,Javascript,Html,Svg,我需要从HTML元素中提取一个特定属性。 这是一个SVG元素,具有clip path属性。我需要用我的自定义剪辑路径替换html附带的剪辑路径。我该怎么做呢 我的外部HTML如下所示: <div> <svg xmlns="http://www.w3.org/2000/svg" border="0" width="1303" height="347" role="presentation" style="display: block;"> <

我需要从HTML元素中提取一个特定属性。 这是一个SVG元素,具有clip path属性。我需要用我的自定义剪辑路径替换html附带的剪辑路径。我该怎么做呢

我的外部HTML如下所示:

<div>
    <svg xmlns="http://www.w3.org/2000/svg" border="0" width="1303" height="347"  role="presentation" style="display: block;">
        <clipPath clip-rule="nonzero" id="ac_clip_1">
            <path data-ac-wrapper-id="26" fill="none" stroke="black" d="M 96 10 L 1283 10 1283 295 96 295 96 10 Z"></path>
        </clipPath>
        <clipPath clip-rule="nonzero" id="ac_clip_2">
            <path data-ac-wrapper-id="28" fill="none" stroke="black" d="M 96 10 L 1283 10 1283 295 96 295 96 10 Z"></path>
        </clipPath>
        <clipPath clip-rule="nonzero" id="ac_clip_3">
            <path data-ac-wrapper-id="30" fill="none" stroke="black" d="M 96 10 L 1283 10 1283 295 96 295 96 10 Z"></path>
        </clipPath>

        <g data-ac-wrapper-id="23">
            <path data-ac-wrapper-id="24" fill="transparent" stroke="none" d="M 0 0 L 1303 0 1303 0 1303 347 1303 347 0 347 0 347 0 0 0 0 Z">
            </path>
        </g>
        <path id="68" clip-path="url(file:///C:/Users/user1/Desktop/svg.html#ac_clip_1)" clipPathUnits="userSpaceOnUse" fill="none" stroke="none" d="M 0,0"></path>
        <path id="69" clip-path="url(file:///C:/Users/user1/Desktop/svg.html#ac_clip_2)" clipPathUnits="userSpaceOnUse" fill="none" stroke="none" d="M 0,0"></path>
        ....
    </svg>
</div>

....
我想替换
clip path=“url(file:///C:/Users/user1/Desktop/svg.html#ac_clip_1/2/3...)
使用
clip path=“url(#ac_clip_1/2/3..)从整个HTML中删除


任何提示都将不胜感激。

要检索具有该属性的元素,请对包含的元素执行
.querySelectorAll(“[clip path]”)


然后循环所有元素并对所有剪辑路径属性值执行
。替换(/^..*.\/,'.'.''.''.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'
)若要检索具有该属性的元素,请对包含的元素执行

然后循环所有元素,并对所有剪辑路径属性值进行替换(/^.*.#/,'#')

我们可以在DOM上使用

getElementById 如果您想在具有特定id的路径上执行此操作,我们可以使用
getElementById

document.getElementById("68").setAttribute("clip-path", "url(#ac_clip_1/2/3..)");
getElementsByTagName 一个更优雅的解决方案是使用
getElementsByTagName
替换它们,以防替换字符串不唯一。如果剪辑路径具有增量id,则可以使用foreach中提供的索引变量相应地操作替换URL

var allPaths = document.getElementsByTagName("path");
allPaths.forEach(function(element, index){
    element.setAttribute("clip-path", "url(#ac_clip_1/2/3..)");
});
我们可以在DOM上使用

getElementById 如果您想在具有特定id的路径上执行此操作,我们可以使用
getElementById

document.getElementById("68").setAttribute("clip-path", "url(#ac_clip_1/2/3..)");
getElementsByTagName 一个更优雅的解决方案是使用
getElementsByTagName
替换它们,以防替换字符串不唯一。如果剪辑路径具有增量id,则可以使用foreach中提供的索引变量相应地操作替换URL

var allPaths = document.getElementsByTagName("path");
allPaths.forEach(function(element, index){
    element.setAttribute("clip-path", "url(#ac_clip_1/2/3..)");
});
演示 演示中评论的详细信息

/*
收集所有具有[clip path]属性的
在其中的任何位置都有“url”的值——进入节点列表。
*/
var path=document.querySelectorAll('path[clip path*=url]');
/*
在通过节点列表的每个循环上。。。
…使用.setAttributeNS()更改[clip path]的值
属性
…并通过将最后一个字符的索引增加+1来修改该值
*/
for(设i=0;i
使用开发人员工具验证新的[clip path]值

Demo 演示中评论的详细信息

/*
收集所有具有[clip path]属性的
在其中的任何位置都有“url”的值——进入节点列表。
*/
var path=document.querySelectorAll('path[clip path*=url]');
/*
在通过节点列表的每个循环上。。。
…使用.setAttributeNS()更改[clip path]的值
属性
…并通过将最后一个字符的索引增加+1来修改该值
*/
for(设i=0;i
使用开发人员工具验证新的[clip path]值


太棒了!谢谢没问题,快乐编码。太好了!谢谢没问题,编码快乐。谢谢Arjan。但实际上可能不需要标记只出现在SVG的“路径”中,它也可能直接出现在标记上。抱歉,因为我的代码示例可能不清楚。我的错,我以为这只是路径元素。谢谢Arjan。但实际上可能不需要标记只出现在SVG的“路径”中,它也可能直接出现在标记上。很抱歉,因为我的代码示例可能不清楚。我的错是,我认为它只适用于path元素。