2011-12-03 79 views
0

我有一個JavaScript函數可以重新格式化鏈接。當單擊HREF鏈接時,我需要執行此方法來完成創建HREF。Javascript:將函數的結果嵌入HREF

例JS方法:

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

我有一個定期HREF並希望上述方法的結果結合起來,創造:

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

這是可能的,是理想的做所以?

回答

1

您可以使用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事件處理程序。請注意0​​屬性。

<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

可以將函數的結果嵌入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> 
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屬性e傳遞給你傳入的第二個參數。在這種情況下,"http://www.site.com/" + fixURL('poo','no')

+0

jQuery來做到這一點?作爲推薦或作爲替代,這沒什麼問題,但問題沒有標記[tag:jquery],這是一個非常簡單的任務。 – Ryan

+0

夠公平的。想象一下,如果提問者在其他地方使用jQuery,並且沒有提及它,我會建議它。 –

+2

有純粹主義者認爲jQuery是一種柺杖。如果您發現自己正在輸入*的一些變體,如果您正在使用/可以使用jQuery *,請考慮jQuery是否真的有必要回答這個問題。如果你對於「暗示」它過於樂觀,你有時會得到低估。只要確定有足夠的理由來切實改進方法並儘可能強化論點或考慮不回答。 ':)' –