如何使用JavaScript正确定义href属性?

时间:2014-09-01 15:54:51

标签: javascript href

我有一个链接,将用户带到我网站的意大利语版本。我想使用javascript定义此锚点的href属性,以便它相对于当前页面。这是html:

<a href="javascript:changeLanguage()" id="lang-link"" >Italiano</a>

这是javascript:

function changeLanguage(){

    var pathArray = window.location.pathname.split( '/' );

    var filename = pathArray[2];

    var newURL = window.location.protocol + "://" + window.location.host + "/ITALIANO/" + filename;

    document.getElementById("lang-link").href= newURL;
};

当我点击链接时,我必须单击两次才能加载新页面并加载错误。我的编码带我到:

http://www.ilcataldo.com/de/http:://www.ilcataldo.com/ITALIANO/shows.html

代替:

http://www.ilcataldo.com/ITALIANO/shows.html

有人可以解释一下我做错了什么吗?我是一个自学成才的新手! 谢谢, 卡瑟尔

2 个答案:

答案 0 :(得分:0)

尝试:

<a href="" onclick="changeLanguage()" id="lang-link">Italiano</a>

使用JavaScript:

function changeLanguage() {
 var pathArray = window.location.pathname.split( '/' );
 var filename = pathArray[2];
 var newURL = window.location.protocol + "//" + window.location.host + "/ITALIANO/" + filename;
 document.location.href = newURL;
}

答案 1 :(得分:0)

改变这个:

var newURL = window.location.protocol + "://" + window.location.host + "/ITALIANO/" + filename;

document.getElementById("lang-link").href= newURL;

到此:

window.location = window.location.protocol + "//" + window.location.host + "/ITALIANO/" + filename;

您看到错误的网址的原因与您的代码中的网址构造有关。您在协议前缀中插入了无关的:,这不是正确的URI格式。因此,浏览器假定链接引用是相对于当前文档的。

您必须单击两次才能重新加载页面的原因是您的代码仅在第一次单击时修改了链接href。它没有指示浏览器加载新页面。