如何通过仅替换一些文本来更改href标记

时间:2017-08-26 20:11:38

标签: javascript jquery html ios

如果有人从iOS调用该页面,我会尝试替换href。问题是JavaScript不能仅替换搜索到的文本,而是替换所有初始链接。例如:

<a href="http://example.com" class='dynamicLink'>test</a>

当iOS手机或平板电脑在此链接中更改时

 <a href="http://ios+example.com" class='dynamicLink'>test</a>

但是JavaScript取代了所有

 <a href="http://ios+" class='dynamicLink'>test</a>

有人知道这个问题

window.onload = function changeLinks() {
    var href = "http://ios+"
    var links =
        document.getElementsByClassName('dynamicLink');
    if (navigator.userAgent.match(/Android/i) ||
        navigator.userAgent.match(/webOS/i) ||
        navigator.userAgent.match(/iPhone/i) ||
        navigator.userAgent.match(/iPad/i) ||
        navigator.userAgent.match(/iPod/i) ||
        navigator.userAgent.match(/BlackBerry/i) ||
        navigator.userAgent.match(/Windows Phone/i)
    ) {
        for (var i = 0; i < links.length; i++) {
            links[i].href = href.replace('http://', "http://ios+");
        }
    } else {
        for (var i = 0; i < links.length; i++) {
            links[i].href = href.replace('http://', "http://");
        }
    }
}

1 个答案:

答案 0 :(得分:2)

您正在使用href.replace(...替换该链接,但上面将href定义为var href = "http://ios+"

尝试这种方式:

for (var i = 0; i < links.length; i++) {
    links[i].href = links[i].href.replace('http://',"http://ios+");
  }

甚至是这样,实际使用这个href

for (var i = 0; i < links.length; i++) {
    links[i].href = links[i].href.replace('http://', href);
  }