Javascript: встраивание результата функции в HREF - PullRequest
0 голосов
/ 03 декабря 2011

У меня есть функция javascript, которая переформатирует ссылку.Когда нажата ссылка HREF, мне нужно выполнить этот метод, чтобы завершить создание HREF.

Пример метода JS:

function fixURL (dest, val){
   return dest + val;
}

У меня есть обычный HREF, и я хотел бы объединить результатописанного выше метода для создания:

<a href="http://www.site.com/" + fixURL('poo','no')>Click me!</a>

Возможно ли это и идеально ли это сделать?

Ответы [ 3 ]

1 голос
/ 03 декабря 2011

Вы можете использовать обработчик onclick. Обратите внимание, что обычно лучше не использовать встроенные обработчики событий , такие как onclick="something...", так что это только для демонстрационных целей.

Также будет попытаться открыть новое окно / вкладку с результатом поиска.

<a target="_blank"
   href="https://www.google.com/search?q=chris+rock"
   rel="chris+rock|dave+chappelle"
   onclick="fixURL(this)">Test</a>

function fixURL(el){
    var vals = el.rel.split('|');
    el.href = el.href.replace(vals[0],vals[1]);
}

http://jsfiddle.net/sxtuz/1/

Тот же эффект, только с использованием обработчиков событий DOM. Обратите внимание на атрибут id="fixme".

<a id="fixme"
   target="_blank"
   href="https://www.google.com/search?q=chris+rock"
   rel="chris+rock|dave+chappelle">Test</a>

function fixURL(el){
    var vals = el.rel.split('|');
    el.href = el.href.replace(vals[0],vals[1]);
}
window.onload = function(){
    document.getElementById('fixme').onclick = function(){
        fixURL(this);
    };
}

http://jsfiddle.net/sxtuz/

0 голосов
/ 03 декабря 2011

Если оставить его как:

<a href="http://www.site.com/">Click Me!</a>

Затем вы можете использовать jQuery для:

$("a[href='http://www.site.com/']").attr("href", "http://www.site.com/" + fixURL('poo','no'))

Пояснение:

$("a[href='http://www.site.com/']") соответствует элементу с существующим href, равным http://www.site.com/, затем изменяет его атрибут href на второй передаваемый вами параметр. В этом случае "http://www.site.com/" + fixURL('poo','no')

0 голосов
/ 03 декабря 2011

Вы можете встроить результат функции в href, да, но вызов функции не может быть встроен в HTML. Попробуйте это:

<a href="http://www.example.com/">A link</a>
<script type="text/javascript">
    !function(links) {
        links[links.length-1].href+=fixURL('arg1', 'arg2');
    }(document.getElementsByTagName('a'));
</script>
...