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

Posted

技术标签:

【中文标题】如何仅通过替换一些文本来更改 href 标签【英文标题】:How to change the href tag by only replacing some text 【发布时间】:2017-08-26 20:11:37 【问题描述】:

如果有人从 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】:

您正在使用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);
  

【讨论】:

上帝保佑你非常感谢,我不知道问题出在哪里

以上是关于如何仅通过替换一些文本来更改 href 标签的主要内容,如果未能解决你的问题,请参考以下文章

更改优步购物车中的数量标签?

如何通过单击按钮更改标签文本?

UISegmentedControl 值更改时如何仅更改文本颜色?

当用户使用颤振键入一些文本时,如何解析和替换一个单词作为主题标签链接?

如何动态更改android标签文本?

UITests:如何测试标签是不是在更改后包含一些文本?