2011-01-18 1 views
0

난이 내 몸 태그 같은 많은 하이퍼 링크로 구성되어있는 HTML 페이지가 ...자바 스크립트 눈에 거슬리지

다음 내가 눈에 거슬리지 자바 스크립트를 사용하기로 결정
<a href="http://www.example.com/?id=313354">User Name</a> 

... 그럼 난 모두 변경하려면이 나는 위의 두 번째 링크를 클릭하면, 내가 첫 번째 링크가하는 것처럼 함수를 호출거야 원하는

<a id="354313" href=#>User Name</a> 

은 ""태그가 ... 수 ... 내 질문에 도착하는 방법입니다 body 태그 안의 모든 "a"요소는 그 함수의 id를 따릅니다.

+2

http://jsfiddle.net/yahavbr/uMbEY/이 돌출 자바 스크립트를 사용하기로 결정하지 마십시오. 그것은 뒤로 움직이고 있습니다. – Quentin

+0

그래, 맞아 ... 미안, 내가 틀렸어 ... – theHack

+0

jQuery와 같은 자바 스크립트 라이브러리를 사용할 수 있습니까? 그것은이 일을 상대적으로 쉽게 만들어야합니다 ... – Chris

답변

1

은 무엇 후 당신은이 코드 :

<script type="text/javascript"> 
window.onload = function WindowLoad() { 
    var arrLinks = document.getElementsByTagName("a"); 
    for (var i = 0; i < arrLinks.length; i++) { 
     var oLink = arrLinks[i]; 
     var sCurHref = oLink.href; 
     if (sCurHref.indexOf("?id=") >= 0) { 
      var ID = sCurHref.split("?id=")[1]; 
      if (ID.length > 0) { 
       oLink.id = ID; 
       oLink.href = "#"; 
       oLink.onclick = function() { 
        document.location.href = sCurHref; 
        return false; 
       } 
      } 
     } 
    } 
} 
</script> 

이 보이는 HREF를 변경, 모든 링크를 반복합니다 "#"에 적절한 ID를 적용, 자신의 기능을 보존 .

주변의 라이브 테스트 케이스 엉망으로 자유롭게 (해당 ID의 사용 무슨 말을하지 않았지만) :

+0

감사합니다 .... 정말 도움이 되네요 ... – theHack

+0

@Afrig는 이전에 말한 것처럼 대답을 수락하겠습니다. 왼쪽의 빈 "V"기호를 클릭하면 녹색으로 변하는 간단한 문제입니다. –

+0

죄송합니다, 나는 버튼의 사용을 모르는 데 사용 ... – theHack

0

뭔가 같은 :

<script language="javascript"> 
    function myFunction(id) 
    { 
     alert(id); 
    } 
</script> 

<a id="354313" onclick="myFunction(this.id);" href="#">;User Name<;/a> 

확실하지하지만, 이런 일이 : jQuery

+0

내 말은, 어떻게 모든 "a" 태그 ... 자바 스크립트를 사용하여 메신저 동안 obtrusive ... – theHack

+2

이것은 매우 눈에 띄지 않습니다. 그는 조심성있는 (적어도 나는 그렇게 희망한다) 것을 의미했다 –

+0

제로 그래 나는 유감스럽게 생각한다. .. 나는 눈에 잘 띄지 않는 자바 스크립트를 의미한다. .. – theHack

2

을 테스트 : 당신이 지금까지 만든 모든 요소에서 작동하려면

$('a').click(function() { 
    var id = this.getAttribute('id'); 
    // Do something... 
}); 

을, 이것을 사용하십시오 :

$('a').live('click', function() { 
    var id = this.getAttribute('id'); 
    // Do something... 
}); 
+0

jQuery를 사용하지 않기 때문에 제안이 있습니다. – theHack

+0

@Afrig : Zaje의 답변을 살펴보십시오. jQuery와 같은 자바 스크립트 라이브러리를 사용하지 않는 특별한 이유가 있습니까? 아니면 단지 원하지 않기 때문입니까? –

+0

jQuery를 사용하고 싶지 않습니다 ... – theHack

0

나는 이런 식으로 처리하고자하는 링크에 클래스를 추가한다고 말합니다.

<a class="mylink" ... >User Name </a> 

이제 요소를 클래스 이름으로 읽습니다. JQuery와 같은 새로운 브라우저 나 JS 라이브러리를 사용하고 있다면.

var links = document.getElementsByClassName("mylink") //Method in Mozilla Browser 

위의 링크는 문제없이 잘 처리 할 수있는 링크입니다.

2

나는 이것이 당신이 시도하길 바란다.

<script type='text/javascript'> 

var alA = document.getElementsByTagName("a"); 
for(var aCounter=0;aCounter<alA.length;aCounter++) { 

var singleA = alA[aCounter]; 
singleA.onclick = function() { 

window.open = "http://www.example.com/?id="+singleA.id; 
} 

} 

<script> 
+0

예 ... 나에게 도움이된다. 그러나 때로는 body 태그 안에 동일한 id를 가진 2 개 이상의 "a"요소가있다 ... ... – theHack

+0

네, ID와 상관없이 작동합니다. – Zaje

+0

@Afrig : 동일한 ID를 가진 요소가 여러 개 있으면 안됩니다. 그렇다면 클래스를 사용하십시오. –

0
// Function that you want to call 
function fake(id) 
{ 
    // Your content 
} 

// Get all "a" elements and put it in an Array 
var links = window.document.getElementsByTagName("a"); 
for (var i=0; i<links.length; ++i) 
{ 
    fake(links[i].id); 
}