一段JS代码,实现树空间的动态定位.完全前台实现,不用提交.具体代码如下:
var treeViewClickBolder = false;
var treeViewEventSource = null;
var treeViewSolveFunction = null;
var treeViewAHead = null;
function TreeViewShow(_treeViewAHead,ctrlID,solveFunc)
{
treeViewEventSource = (ctrlID == undefined || ctrlID == null ? event.srcElement : $(ctrlID));
treeViewSolveFunction = (solveFunc == undefined || solveFunc == null ? null : solveFunc);
treeViewAHead = _treeViewAHead;
var divBodyMenu = 'div' + treeViewAHead;
TreeViewSetClickBolder();
TreeViewSetDivPosition(divBodyMenu);
$(divBodyMenu).detachEvent('onclick', TreeViewSetClickBolder);
$(divBodyMenu).attachEvent('onclick', TreeViewSetClickBolder);
document.detachEvent('onclick', TreeViewHideBodyMenu);
document.attachEvent('onclick', TreeViewHideBodyMenu);
document.detachEvent('onkeydown', TreeViewCotrolScroll);
document.attachEvent('onkeydown', TreeViewCotrolScroll);
$(divBodyMenu).style.display = 'block';
}
function TreeViewSetDivPosition(divid)
{
var leftpos = 0, toppos = 0;
var ev = treeViewEventSource;
while(ev.tagName.toUpperCase() != "HTML" && ev.tagName.toUpperCase() != "BODY")
{
leftpos += ev.offsetLeft;
toppos += ev.offsetTop;
ev = ev.offsetParent;
}
$(divid).style.left = leftpos;
$(divid).style.top = toppos + 17;
}
function TreeViewGetData()
{
var otr=event.srcElement;
if(otr.title != "单击选中")
{
return;
}
var strData=Trim(otr.innerText);
if(treeViewSolveFunction == null)
{
treeViewEventSource.value = strData;
}
else
{
treeViewSolveFunction(strData);
}
TreeViewHideBodyMenu();
}
function TreeViewSetClickBolder()
{
TreeViewClickBolder = true;
}
function TreeViewHideBodyMenu()
{
if(TreeViewClickBolder)
{
TreeViewClickBolder = false;
}
else
{
$('div' + treeViewAHead).detachEvent('onclick', TreeViewSetClickBolder);
document.detachEvent('onclick', TreeViewHideBodyMenu);
document.detachEvent('onkeydown', TreeViewCotrolScroll);
$('div' + treeViewAHead).style.display = 'none';
}
}
function TreeViewCotrolScroll()
{
if(treeViewID != null && $(treeViewID) != null && $(treeViewID).style.display != "none")
{
if(event.keyCode == 40)
{
$('divPanel').doScroll('down');
}
else if(event.keyCode == 38)
{
$('divPanel').doScroll('up');
}
else if(event.keyCode == 37)
{
$('divPanel').doScroll('left');
}
else if(event.keyCode == 39)
{
$('divPanel').doScroll('right');
}
}
}