Javascript 从一个字符串中提取一个单词,从一个特定的单词开始直到结束
我需要从HTML元素中提取一个特定属性。 这是一个SVG元素,具有clip path属性。我需要用我的自定义剪辑路径替换html附带的剪辑路径。我该怎么做呢 我的外部HTML如下所示: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;"> <
<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元素。