使用字符串替换迭代数据集
Iterate over dataset with string replace
我正在尝试迭代一组li
元素,并将其数据集属性替换为字符串。
问题是,我只想替换与另一个字符串匹配的部分,然后保留其数据集的其余部分完整。
HTML是这样的:
<ul class="myUL">
<li data-path="http://example.com/test1/">Link1</li>
<li data-path="http://example.com/test1/test2">Link2</li>
<li data-path="http://example.com/test1/test2/test3">Link1</li>
</ul>
下面是我要做的:
var UL = document.querySelector('.myUL');
var children = UL.getElementsByTagName("li");
var URL = "http://example.com/test1/";
var newURL = "http://example.com/replaced/";
for (i = 0; i < children.length; ++i) {
var li = children[i];
var datapath = li.dataset.path;
if(datapath.match(URL)) {
li.dataset.path = datapath.replace(datapath, newURL);
}
}
但是,这只是用字符串替换整个URL。我只想替换与字符串匹配的部分。所以输出应该是这样的:
<ul class="myUL">
<li data-path="http://example.com/replaced/">Link1</li>
<li data-path="http://example.com/replaced/test2">Link2</li>
<li data-path="http://example.com/replaced/test2/test3">Link1</li>
</ul>
如果有人能提供一些帮助,我将非常感激。我希望有一种方法可以从.match()语句中获取剩余的内容,然后我可以简单地将其附加到新的URL。
这是我正在制作的小提琴http://jsfiddle.net/JLCMB/4/
您想用newURL
替换URL
,而不是用newURL
替换datapath
。
:
li.dataset.path = datapath.replace(datapath, newURL);
就变成:
li.dataset.path = datapath.replace(URL, newURL);
见http://jsfiddle.net/JLCMB/5/
我还建议你在执行这行之前不需要if语句。
//if(datapath.match(URL)) {
//should work fine just with this
li.dataset.path = datapath.replace(URL, newURL);
//}
相关文章:
- 我可以按特定的顺序迭代一个标签中的不同数据标签吗
- 使用JavaScript对JSON对象进行迭代无法处理此数据
- 在不同数据选项之间循环迭代对象
- jQuery:仅显示新的JSON数据,并使用自己的段落标签进行迭代
- 如何迭代无序的JSON数据并排序为数组
- 如何在数据数组的每次迭代中创建一个内容为“i+1”的新 HTML 元素
- 如何使用 D3 javascript 迭代 JSON 文件中的数据
- AngularJs:迭代指令内的数组以创建嵌套的指令集
- For 循环不迭代,输出的数据不超过第一个任务
- 从数据绑定属性迭代键值对
- 将数据推送到阵列,然后迭代
- 递归迭代没有已知长度和深度的 JSON 数据
- Knockout foreach 循环迭代相同的数据元素
- 如何使用 D3.js 在带有按钮的一个区域中创建/显示具有相同数据的图表的多次迭代
- Cesiumjs:如何从GeoJsonDataSource中迭代数据
- ng重复仅显示第一迭代数据
- 使用angularjs在一次请求中发布迭代数据
- AngularJS:自定义迭代/数据转换和分组…当简单的ng-repeat只是won'
- 使用字符串替换迭代数据集
- 迭代大型数据集的Excel VBA与Javascript性能