重写数组中的链接

时间:2011-09-20 22:22:56

标签: javascript jquery arrays

我有两个索引页面大约。每个链接150个。我宁愿维护1页,只是根据变量值动态生成链接。例如,创建链接列表。 link1,link2,link3 ...并基于变量值为'true'将这些链接替换为备用链接列表,即altlink1,altlink2,altlink3 ......

我已经想出了如何做到这一点,而不是为每个链接反复编写相同的代码,我想知道是否有更快的方法。就像创建一个列表“a”和相应的列表“b”或类似的东西。我已将下面的当前代码包含在内,我期待着您的建议。

<script type="text/javascript">          
// link rewriter        
var hostadd = location.host;
var vendor = '999.99.999.99';
var localaccess = 'somesite.com';

    $(document).ready (
    function link_switcher(){ 
    //if not a vendor route to alternate website
    if (hostadd != vendor) { $("a[href= 'https://www.somelink1.com']").attr    ('href', 'https://www.alternatelink1.com')  }
});
</script>

是否可以创建一个数组然后javascript,将数组a中的link1替换为数组b中的alternatelink1?

1 个答案:

答案 0 :(得分:2)

目前还不完全清楚你要做什么,但是如果你想根据一个查找表重写所有链接,告诉你转换为什么链接,那么你可以这样做:

// Table of links. 
// Key is original page source URL
// Data is link to change it to
var linkData = {
    "http://www.google.com": "http://www.bing.com/",
    "http://mail.google.com/mail/?shva=1#inbox": "http://www.hotmail.com"    
};

// find every link in the page and change it if it's value is found in the linkData table
$("a").each(function() {
    var link = this.getAttribute("href");  // use getAttribute to get what was actually in the page, perhaps not fully qualified
    if (linkData[link]) {
        this.href = linkData[link];
    }
});

如果未在表格中找到该链接,则不会修改该链接。如果修改有一些模式,则可以对该模式进行编码,而不必列出表中的每个链接,但是您没有共享有关模式的任何信息。

并且,一个有效的jsFiddle示例:http://jsfiddle.net/jfriend00/Cvj8C/