2012-05-24 2 views
2

У меня есть сайт, который включает в себя Jquery-вкладку, так что у меня есть хэштег в моих URL, чтобы отображаться требуемая вкладка:Javascript - изменение HREF для ссылки

www.abc.de/site#tab4 

На этом сайте у меня есть ссылка, которая выглядит так:

<a href="/site.html?option=1" name="optionslink" id="optionslink" onclick="javascript:test()">LINKTEXT</a> 

С помощью этой ссылки пользователь может выбрать опцию для продукта. Сайт загружается по клику. Я хочу добиться того, чтобы на нажмите строку после хэштегом в URL считывается, а затем эта строка будет добавлена ​​в URL или ссылку ...

Моя функция выглядит следующим образом:

function test() { 
var info=window.location.hash; 
alert(info); 
document.getElementById("optionslink").href+info; 
return true; 
} 

До сих пор функция нажата. Я получаю всплывающее окно с предупреждением, которое показывает правильный хэштег и его строку. Но сайт перезагружается без добавления hashtag + string. Это выглядит следующим образом:

www.abc.de/site.html?option=1 

Он должен выглядеть следующим образом:

www.abc.de/site.html?option=1#tab4 

Как я могу получить эту работу?

+1

The "JavaScript:" в вашем OnClick избыточна - это должно быть просто тест() – Nealbo

+1

ТНХ за подсказку, Nealbo! – profilneurotiker

ответ

2

Просто измените местоположение:

function test() { 
    var info=window.location.hash; 
    window.location = document.getElementById("optionslink").href + info; 
    return false; 
} 

<a href="/site.html?option=1" name="optionslink" id="optionslink" onclick="return test();">LINKTEXT</a> 

Другое дело, когда вы проходите текущий якорь к функции, и сохранить накладные расходы DOM запроса:

function test(anchor) { 
    var info=window.location.hash; 
    window.location = anchor.href + info; 
    return false; 
} 

<a href="/site.html?option=1" name="optionslink" 
    id="optionslink" onclick="return test(this);">LINKTEXT</a> 

Примечание что не использование inline scripts - это лучшая практика с событиями javascript.

Вы должны прочитать о addEventListener, вы можете прочитать об этом в MDN

+0

если его вкладки jQuery я не думаю, что это хорошая идея вернуть что-то на onclick, не так ли? Особенно, если вы проверяете функцию, возвращает false – meo

+0

@meo. Почему ты так думаешь? – gdoron

+0

, потому что return false; ломает пузырение события ... если другая функция прослушивает klick на этом элементе, то даже не будет там – meo

3

Вы не меняете атрибут href. Попробуйте

document.getElementById("optionslink").href += info; 

Ваш код document.getElementById("optionslink").href+info; просто не имеет никакого эффекта, так как есть только concatination, но не назначение в HREF атрибута.

+0

Thx Sirko за ваш быстрый ответ ... Я не очень хорошо знаком с javascript-кодом, мне нужно многому научиться ... изменение моего кода на ваше предложение не повлияло на меня, но второе решение gdoron сделал это для меня ... THX снова! – profilneurotiker

Смежные вопросы