2012-03-01 4 views
9

HTML 페이지에서 클릭 한 모든 요소를 ​​추적하고자합니다. 요소가 클릭 된 정확한 참조 방법이 필요합니다 (나중에 동일한 HTML 페이지에서 클릭을 재생할 수있게됩니다).JavaScript를 사용하여 클릭 한 요소를 모두 추적하십시오.

클릭 한 요소를 참조하는 좋은 방법이 있습니까?

페이지의 모든 단일 요소에 고유 한 ID 및 클래스 이름을 추가 할 수 있습니다. 그러나 나는 nother way가 있어야한다고 생각한다?

클릭 수를 재생할 HTML 페이지는 동일합니다.

이 라이트

뭔가

var arrayWithElements = new Array(); 

document.onclick = clickListener; 

function clickListener(e) { 
    var clickedElement; 
    if(e == null) { 
     clickedElement = event.srcElement; 
    } else { 
     clickedElement = e.target; 
    } 
    arrayWithElements.push(clickedElement) 
    alert(arrayWithElements); 
} 

코드를 클릭 한 느릅 나무 요소를 추적하는 ...

코드를 (그것이하지만 더 정확한 정보 느릅 나무 요소는, 어쩌면 수집하는 것이 가능하다) 그 동일한 HTML 페이지에서 사용됩니다

document.someHowGetTheElement().onclick(); 
+2

: 그래서 당신이

document.getElementsByTagName(item.tag)[item.index] 

를 사용하여이 문서의 또 다른 "예"이 요소에 액세스 할 수 있습니다

데모 (항목는 arrayWithElements의 항목입니다) 아마도 가장 쉬운 방법 일 것입니다. JavaScript로도 추가 할 수 있습니다. –

+0

"더 정확한 정보"란 무엇을 의미합니까, 현재 clickedElement는 노드에 대한 참조를 제공 할 것이며, 이보다 더 정확하게 무엇이 될 수 있는지 모르겠습니다. –

+0

@James : 'this'는 클릭 한 요소가 아닌'document'를 참조합니다. @ Dr.Molle : 그는 다른 페이지의 이벤트를 "재생"하는 것에 대해 언급합니다. DOM 노드에 대한 참조를 유지하거나 전송할 수 없습니다. –

답변

14

난 당신이 이런 식으로 뭔가를 찾고있다 같아요 예를 들어


var arrayWithElements = new Array(); 

function clickListener(e) 
{ 
    var clickedElement=(window.event) 
         ? window.event.srcElement 
         : e.target, 
     tags=document.getElementsByTagName(clickedElement.tagName); 

    for(var i=0;i<tags.length;++i) 
    { 
     if(tags[i]==clickedElement) 
     { 
     arrayWithElements.push({tag:clickedElement.tagName,index:i}); 
     console.log(arrayWithElements); 
     }  
    } 
} 

document.onclick = clickListener; 

그것은 모든에 저장합니다

객체를 클릭하는 요소의 tagName과 색인을 포함합니다. 각 요소에 ID를 추가 http://jsfiddle.net/doktormolle/z2wds/

+0

감동! 나는 그것이 내가 찾고 있었던 정확하게 것이라고 생각한다! 고마워요 :) – user1087110

+1

+1 좋은 생각. 'getElementsByTagName'의 결과를 캐쉬 할 가치가 있습니다. –

+0

예, 제안서를 적용했습니다 –

1

this related question. 즉, 장소에 ID를 추가하지 않고 클릭 한 요소를 확인하는 좋은 방법은 jquery의 .cssSelectorAsString() 메소드를 사용하는 것입니다. 또한

function clickListener(e) { 
    var clickedElement; 
    if(e == null) { 
     clickedElement = event.srcElement; 
    } else { 
     clickedElement = e.target; 
    } 
    arrayWithElements.push($(clickedElement).cssSelectorAsString()); // <==== 
    alert(arrayWithElements); 
}  

참조 : Get unique selector of element in Jquery

+0

jquery (언급하는 것을 잊어 버렸습니다)를 사용하지 않습니다. 하지만 xPath 정신을 들여다 볼 것입니다! 감사! – user1087110

관련 문제