3

我对 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");
} }

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

4

3 回答 3

0

这是一个使用函数式 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 似乎拥有所有所需的管道。

在比较相等性时请务必使用 === 运算符,否则您可能无法获得预期的结果。

于 2015-02-10T01:32:38.170 回答
0

您可以使用以下代码:

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)则返回 -1 。foobar

于 2015-02-10T02:00:58.237 回答
0

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

var href = anc.getAttribute("href")
if (href.substr(0, 12) == "/catalog?id=") {
    anc.setAttribute("href", href + "#specificID");
    anc.setAttribute("target", "iframe");
}
于 2015-02-10T01:10:29.853 回答