2014-09-01 2 views
2

У меня есть ссылка, которая приводит пользователя к итальянской версии моего сайта. Я хочу определить атрибут href этого якоря, используя javascript, чтобы он относился к текущей странице. Вот HTML:Как я могу правильно определить атрибут href с помощью JavaScript?

<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

Может кто-нибудь объяснить, что я делаю неправильно? Я начинающий учитель!
Спасибо, Cathal

+0

В первый раз, когда вы нажимаете на ссылку, все, что она делает, это изменение 'href' ссылки, оно не перезагружает страницу с этого URL-адреса. Вы должны щелкнуть его снова, чтобы перейти по новой ссылке. – Barmar

+0

, чтобы перейти к новому URL-адресу, выполните 'document.location.href = newURL' – Barmar

+0

. Ошибка в построении URL-адреса. См. Ответ ниже. –

ответ

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; 

Причина, по которой вы видите неправильный URL-адрес, связана со строительством URL-адреса вашего кода. Вы вставляли посторонний : в префикс протокола, который не является правильным форматом URI. Следовательно, браузер предположил, что ссылка на ссылку относится к текущему документу.

Причина, по которой вам пришлось дважды щелкнуть, чтобы перезагрузить страницу, заключается в том, что ваш код только менял ссылку href на первый клик. Он не инструктировал браузер загружать новую страницу.

0

Try:

<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; 
} 
Смежные вопросы