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

相關問題