我有一个函数,当鼠标光标拖动某个元素时,它将一直运行。
在函数内部,我有一些值:e.target
(函数事件的元素拖动),e.x
(客户端X),e.y
(客户端Y),x
和y
。
几乎在函数结束时,我将变量x
值更改为:
parseInt(
parseInt(
parseInt(e.target.style.left)
+e.x
)
+Map.GetItemWidth(
Attribute(e.target,'data')
)/2
)
Map.GetItemWidth
函数是这样的:
GetItemWidth:function(s){
if(XML.GetRoot(s)==Map.Tags.S){
/* If item root tag is equal to "S" */
return parseInt(XML.Tag.Get(
{
into: Map.Tags.S,
attr: Map.Attr.L
},
s));
/* XML.Tag.Get([{[tag],[attribute]}],[string])
returns a attribute of some tag in some XML string. */
}
}
快速解释,文档正文中的每个元素都有一个包含其XML标记(<S><S /></S>
)的属性(数据),<**S**></**S**>
标记使其代表(我的工具)的地面,以及<S />
标记包含其属性及其值(如X和Y坐标,或宽度和高度)。它们看起来像这样:<S L="415" H="236" X="NaN" N="" Y="267" T="0" P="0,0,0.3,0.2,0,0,0,0" />
。
现在,如果你确实得到了它,请回答我解释我做错了什么。 功能问题是这样的:
当我开始拖动某些地面时,控制台返回其当前的XML X
属性和L
(长度,宽度),在返回“{N}”之后X
(或...没有?)和未定义的L
属性。
非常感谢你。
答案 0 :(得分:1)
我忘了指定这是一件简单的事情,并且对于问题中的不良感觉感到抱歉(因为缺少更多信息)。
我一直在更新元素data
属性,我添加了<S [attributes] />
标记,但我没有在<S></S>
标记之间添加,因此{{ 1}}由于Map.GetItemWidth
有条件而没有返回任何内容,在此行中:if
。
它现在运作良好。
感谢。