JavaScript - 更改一组包含特定文本和可变 ID 元素的链接

JavaScript - change a set of links that contain specific text and variable ID element

我真的是 JavaScript 的新手,但这是我的开始:

var anchors = document.body.getElementsByTagName("a");
for(var i=0; i < anchors.length; i++) {
  var anc = anchors[i];
  if (anc.getAttribute("href") == "/catalog?id=123456789") { 
    anc.setAttribute("href", "/catalog?id=123456789#specificID");
    anc.setAttribute("target", "iframe");
} }

我有一个网页,其中包含 link 的列表,类似于 /catalog?id=123456789,其中 ID 可以是 9 个数字的任意组合。我想定位所有 links(包括 ID),在 link 的末尾附加一个页面锚点,然后将它们与页面上现有的 links 切换.我愿意尝试使用 JQuery,但我正在使用的网站使用了 MooTools 库,因此它可能无法正常工作。

使用 substr() 获取 URL 的开头并匹配:

var href = anc.getAttribute("href")
if (href.substr(0, 12) == "/catalog?id=") {
    anc.setAttribute("href", href + "#specificID");
    anc.setAttribute("target", "iframe");
}

这是一个使用函数 JavaScript 和 MooTools Array.prototype.each 函数建立在 barmar 解决方案之上的解决方案:

var anchors = document.body.getElementsByTagName('a');
anchors.filter(function(anc) {
    anc.getAttribute('href').substr(0,12) === '/catalog?id=';
}).each(function(anc) {
    anc.setAttribute('href', href + '#specificID');
    anc.setAttribute('target', 'iframe');
});

无需添加 JQuery 即可完成此操作; Mootools 似乎拥有所需的所有管道。

在进行相等比较时一定要使用===运算符,否则可能得不到预期的结果。

您可以使用以下代码:

var anchors = document.body.getElementsByTagName("a");
for(var i=0; i < anchors.length; i++) {
    var anc = anchors[i];
    if (anc.getAttribute("href").indexOf("/catalog?id=") != -1) { // If the anchor's 'href' attribute contains '/catalog?id='
      anc.setAttribute("href", anc.getAttribute("href") + "#specificID");
      anc.setAttribute("target", "iframe");
    } 
}

在Javascript, foo.indexOf(bar) returns -1 如果字符串foo不包含字符串bar.