我有一个重新格式化链接的javascript函数。单击HREF链接时,我需要执行此方法以完成HREF的创建。
示例JS方法:
function fixURL (dest, val){
return dest + val;
}
我有一个常规的HREF,并希望结合上述方法的结果来创建:
<a href="http://www.site.com/" + fixURL('poo','no')>Click me!</a>
这是否可行,这样做是否理想?
答案 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]);
}
同样的效果,仅使用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);
};
}
答案 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')