2013-08-30 2 views
1

마우스가 현재 가지고있는 요소를 가져 와서 돌려 주려고합니다. 내가 지금까지 연구에서 수집 한 바로는,이 그것을 할 수있는 코드 : 그러나요소 가져 오기 마우스가 자바 스크립트를 사용했습니다.

document.getElementById('theTable').onmouseover = function() { 

    var x = event.ClientX, y = event.ClientY, 
     elementMouseIsOver = document.elementFromPoint(x, y); 

    alert(elementMouseIsOver); 
} 

는, 내가 만든 모든 요소는 ID의가 있지만 난 항상 "[HTMLDivElement와 객체]"의 일정한 수익을 얻을 그 요소의 ID가 ... 코드를 오용하고있는 걸 말해 주길 바래요? SharePoint 내 웹 파트의 탐색 모음이됩니다.

도움이되는 정보를 미리 보내 주셔서 감사합니다.

모든 코드 :

var siteUrl = '/sites/dev/'; 
var theCounter = 0; 
ExecuteOrDelayUntilScriptLoaded(retrieveListItems, "sp.js"); 

function retrieveListItems() { 
var clientContext = new SP.ClientContext(siteUrl); 
var oList = clientContext.get_web().get_lists().getByTitle('myList'); 
var camlQuery = new SP.CamlQuery(); 
camlQuery.set_viewXml("<Where><And><IsNotNull><FieldRef Name='Title' /></IsNotNull> <IsNotNull><FieldRef Name='TitleLink' /></IsNotNull></And></Where>"); 
this.collListItem = oList.getItems(camlQuery); 
clientContext.load(collListItem); 
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed)); 
} 

function onQuerySucceeded(sender, args) 
{ 
var listItemEnumerator = collListItem.getEnumerator(); 
    while (listItemEnumerator.moveNext()) 
    { 
    var oListItem = listItemEnumerator.get_current(); 

    //Each column in in the SharePoint List will essentially become an array. 
    //So make an array for each column that will be returned! 

    var theHeaders = new Array(); 
    var HeaderLinks = new Array(); 
    theCounter += 1; 
    theHeaders[theCounter - 1] = oListItem.get_item('Title'); 
    HeaderLinks[theCounter - 1] = oListItem.get_item('TitleLink'); 

    //Get the Table Element created in HTML 
    var getTheTableTag = document.getElementById('theTable'); 

    //Create the headers (top level links) 
    var createTheHeaderElements = document.createElement('td'); 
    createTheHeaderElements.id = 'headerTag'; 

    var link = document.createElement('a'); 
    link.id = 'headerLinksTag'; 

    var theHeaderText = document.createTextNode(theHeaders[theCounter - 1]); 
    link.setAttribute("href", HeaderLinks[theCounter - 1]); 


    link.appendChild(theHeaderText); 
    createTheHeaderElements.appendChild(link); 
    getTheTableTag.appendChild(createTheHeaderElements); 


//  var createA = document.createElement('a'); 
//  var createAText = document.createTextNode(theCounter); 
//  createA.setAttribute('href', "http://google.com"); 
//  createA.appendChild(createAText); 
//  getTheTableTag.appendChild(createA); 


}; 

////////////////////////////HERE IS THE PROBLEM CHILD////////////////////// 


document.getElementById('theTable').onmouseover = function() { 

    var x = event.ClientX, y = event.ClientY, 
     elementMouseIsOver = document.elementFromPoint(x, y); 

    alert(elementMouseIsOver); 
} 

/////////////////////////////////////////////////////////////////////////// 
} 
function onQueryFailed(sender, args) { 
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); 
} 
+1

사용을 console.log – raam86

+0

또한, 귀하는 clientX가 아닌 자본으로 시작해야 :는 clientX –

답변

3

두 가지가 떠오른다.

  1. onmouseover 기능을 위해 단순히 function() 대신 function(event)을 전달하십시오.

  2. event.target.id 일반적으로 ID를 얻습니다.

+1

것 2 (와 같은 과정의 Y에 대한) : 그게 내가 찾던 바로거야. – Rodrigo

1
document.getElementById('theTable').onmouseover = function (e) { 
    console.log(e.target) 
    alert("mouse is over " + e.target.id); 
} 
관련 문제