2011-12-03 3 views
0

링크를 다시 포맷하는 javascript 함수가 있습니다. HREF 링크를 클릭하면이 메소드를 실행하여 HREF 작성을 완료해야합니다.자바 스크립트 : 함수 결과를 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 이벤트 핸들러를 사용. 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

예를 들어, href에 함수 결과를 포함 할 수는 있지만 함수 호출을 HTML 내에서 인라인 할 수는 없습니다. 이 시도 : 그런 다음 할 jQuery를 사용할 수

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

:

<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/']").attr("href", "http://www.site.com/" + fixURL('poo','no')) 

설명 :

$("a[href='http://www.site.com/']")이 요소와 일치 기존 hrefhttp://www.site.com/이고, href 속성을 변경합니다 e를 전달하는 두 번째 매개 변수와 비교합니다.이 경우 "http://www.site.com/" + fixURL('poo','no')

+0

jQuery를이 작업을 수행하려면? 추천이나 대안으로 문제가 없지만 질문에는 태그가 지정되지 않습니다. [태그 : jquery] 정말 간단한 작업입니다. – Ryan

+0

충분합니다. 나는 asker가 다른 곳에서 jQuery를 사용하고 있고 그것을 언급하지 않았을 경우를 대비해서 그것을 제안했다. –

+2

jQuery를 버팀목의 일종으로 보는 순수 주의자가 있습니다. jQuery *를 사용하고 있거나 사용할 수있는 경우 *의 변형을 입력하는 경우 jQuery가 실제로 해당 질문에 대답해야하는지 여부를 고려하십시오. 당신은 때때로 그것을 "제안"하는 것에 대해 너무 지저분한면 downvotes를 얻을 것입니다. 현실적으로 접근법을 개선하고 논쟁을 가능한 한 강력하게 만들 충분한 이유가 있거나 응답하지 않는 것을 고려하십시오. ':)' –