我的函数在第一次没有返回任何内容后返回了一些值(NaN)

时间:2015-10-28 20:30:00

标签: javascript

我有一个函数,当鼠标光标拖动某个元素时,它将一直运行。

在函数内部,我有一些值:e.target(函数事件的元素拖动),e.x(客户端X),e.y(客户端Y),xy

几乎在函数结束时,我将变量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属性。

非常感谢你。

1 个答案:

答案 0 :(得分:1)

我忘了指定这是一件简单的事情,并且对于问题中的不良感觉感到抱歉(因为缺少更多信息)。

我一直在更新元素data属性,我添加了<S [attributes] />标记,但我没有在<S></S>标记之间添加,因此{{ 1}}由于Map.GetItemWidth有条件而没有返回任何内容,在此行中:if

它现在运作良好。

感谢。