Javascript events javascript中事件内部的局部变量存在问题
我正在删除一个具有可重新调整大小和可拖动分区的页面。我已将mousedown、mousemove和mouseup事件处理程序附加到此分区 问题在于mousemove事件处理程序。我必须获得div的当前宽度、高度、顶部和左侧。为此,我使用函数返回特定值,并且必须在主函数内的不同条件下使用这些值 如果我尝试用这些值分配局部变量,并在前面的代码中使用这些变量,那么脚本就会变慢。意味着在调整大小和拖动过程中有延迟 但是如果我每次调用函数,而不是在条件中使用这些变量,那么就没有延迟 这个问题的原因是什么 代码示例Javascript events javascript中事件内部的局部变量存在问题,javascript-events,Javascript Events,我正在删除一个具有可重新调整大小和可拖动分区的页面。我已将mousedown、mousemove和mouseup事件处理程序附加到此分区 问题在于mousemove事件处理程序。我必须获得div的当前宽度、高度、顶部和左侧。为此,我使用函数返回特定值,并且必须在主函数内的不同条件下使用这些值 如果我尝试用这些值分配局部变量,并在前面的代码中使用这些变量,那么脚本就会变慢。意味着在调整大小和拖动过程中有延迟 但是如果我每次调用函数,而不是在条件中使用这些变量,那么就没有延迟 这个问题的原因是什么
//代码延迟执行
功能调整元件()
{
var ElemHight=GetHeight(elem);
var elemWidth=GetWidth(elem);
var elemTop=GetTop(elem);
var elemLeft=GetLeft(elem);
如果(elemLeft>=20&&elemRight=20&&elemTop=60&&elemHight=60&&elemWidth=20&&GetRight(elem)=20&&GetTop(elem)=60&&GetHeight(elem)=60&&GetWidth(elem),您需要更清楚地表达问题。第二段中的“主要功能”是什么?事件处理程序?什么“条件”在倒数第二段中,最好添加示例代码,显示慢速和快速变体。
// Code executes with a delay
function AdjustElement()
{
var elemHeight = GetHeight ( elem );
var elemWidth = GetWidth ( elem );
var elemTop = GetTop ( elem );
var elemLeft = GetLeft ( elem );
if ( elemLeft >= 20 && elemRight <= 200 )
{
//code for moving element
}
if ( elemTop >= 20 && elemTop <= 200 )
{
// code for moving element
}
if ( elemHeight >= 60 && elemHeight <= 300 )
{
// code for resizing element
}
if ( elemWidth >= 60 && elemWidth <= 300 )
{
// code for resizing element
}
}
// Code executes without delay
function AdjustElement()
{
if ( GetLeft(elem) >= 20 && GetRight(elem) <= 200 )
{
//code for moving element
}
if ( GetTop(elem) >= 20 && GetTop(elem) <= 200 )
{
// code for moving element
}
if ( GetHeight(elem) >= 60 && GetHeight(elem) <= 300 )
{
// code for resizing element
}
if ( GetWidth(elem) >= 60 && GetWidth(elem) <= 300 )
{
// code for resizing element
}
}
// General functions
function GetWidth(elem)
{
return elem.offsetWidth;
}
function GetHeight(elem)
{
return elem.offsetHeight;
}
function GetTop(elem)
{
return elem.offsetTop;
}
function GetLeft(elem)
{
return elem.offsetLeft;
}