如何通过javascript更改href地址端口

如何通过javascript更改href地址端口,javascript,html,Javascript,Html,我正在尝试创建一个简单的href,但指向另一个端口,即一组按钮href address中的一个应该被替换并被操作以指向有效的地址: <div id="btnLSR" class="btn" > <a href="extern.rms:8080"> </a> </div> 应该指向'http://hostname:8080/extern.rms" 我稍微操纵了另一个解决方案中的javascript,如下所示 <script languag

我正在尝试创建一个简单的href,但指向另一个端口,即一组按钮href address中的一个应该被替换并被操作以指向有效的地址:

<div id="btnLSR" class="btn" > <a href="extern.rms:8080"> </a> </div>

应该指向'http://hostname:8080/extern.rms"

我稍微操纵了另一个解决方案中的javascript,如下所示

<script language="JavaScript">  
  document.addEventListener('click', function(event) {
       var target = event.target;
             if (target.tagName.toLowerCase() == 'a')
             {        
                 var port = target.getAttribute('href').match(/:(\d+)$/);    
                 if (port)
                 { 
                     target.port = port[1];
                     window.alert(target.port + " " + target.href);
                     target.href = target.href.replace("/:"+target.port, "");
                 } 
             }
    }, false);

</script>

document.addEventListener('click',函数(事件){
var target=event.target;
if(target.tagName.toLowerCase()=='a')
{        
var port=target.getAttribute('href').match(/:(\d+)$/);
如果(端口)
{ 
target.port=端口[1];
window.alert(target.port+“”+target.href);
target.href=target.href.replace(“/:”+target.port,”);
} 
}
},假);
但是没有办法指向正确的地址。当前此链接指向'http://extern.rms:8080'即没有变化

你有什么想法吗


谢谢

这应该可以做到:

document.addEventListener('click', function (event) {
    var target = event.target;
    if (target.tagName.toLowerCase() == 'a') {
        // Split 'extern.rms:8080' up into a array: ['extern.rms','8080'];
        var h = target.getAttribute('href').split(':');
        // Set the href to: The current `origin` + ':' + '8080' + '/' + 'extern.rms';
        target.href = 'http://' + window.location.hostname + ':' + h[1] + '/' + h[0];
    }
}, false);

我可以问你为什么不只是链接到
http://hostname:8080/extern.rms
在href?当然可以,因为主机名可能会经常更改。看看我的答案,也许可以。不幸的是,在我的情况下,这个问题归结为“我忘了添加
+”:“
,你能试试吗?如果这不起作用,那么您的
窗口.location
h
变量包含什么?谢谢您的回答。我已经添加了缺少的“:”。问题是,正如您提到的window.location变量。它包含:“未定义”。h是(extern.rms,8080).Hm,
location
变量如何?(因此,从代码中删除
窗口。
)您使用的浏览器是什么@ndtreviv:
origin
确实存在于chrome中,我选择了我见过的最合适的<代码>主机名可以作为替代方案。(当手动添加
'http://'
时,也就是说)我相信window.location.origin是未定义的。它不应该是window.location.hostname吗?