Javascript:将函数的结果嵌入到HREF中

时间:2011-12-03 04:37:13

标签: javascript href

我有一个重新格式化链接的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 个答案:

答案 0 :(得分:1)

您可以使用onclick处理程序。请注意,您最好不要使用onclick="something..."之类的inline event handlers,因此这仅用于演示目的。

此外,这将尝试打开包含搜索结果的新窗口/选项卡。

<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/

答案 1 :(得分:0)

您可以将函数的结果嵌入到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>

答案 2 :(得分:0)

如果你保持:

<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')