3

我真正的新JavaScript链接,但这里是我开始有: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"); 
} } 

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

回答

0

使用substr()得到URL的开始,只是匹配:

var href = anc.getAttribute("href") 
if (href.substr(0, 12) == "/catalog?id=") { 
    anc.setAttribute("href", href + "#specificID"); 
    anc.setAttribute("target", "iframe"); 
} 
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似乎拥有所有需要的管道。

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

+0

我希望每个URL都类似于'/ catalog?id = 123456789#specificID'。要么它不在我的网站上工作,要么我没有得到'substr()'的正确值。 – 2015-02-10 02:05:07

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如果字符串foo不包含字符串bar

相关问题