offsetLeft Javascript属性需要更多时间

时间:2016-05-10 11:28:33

标签: javascript jquery dom

offsetLeft Javascript属性需要更多时间。

offLeft = $('div')[0] .offsetLeft

在检查chrome中的分析时,我发现这个offsetLeft在运行我的代码时需要更多时间。有关替换offsetLeft属性的任何建议吗?

function firstcol() {
        var sheet = this.getSheet(), left, right, leftIdx, rightIdx, hScroll = this._hScroller(sheetIdx), colWtColl = sheet._colWidthCollection,
            hhandle = hScroll.element.find(".e-hhandle"), hsLeft = parseInt(**hhandle[0].offsetLeft**);
        left = hsLeft * hScroll._scrollData.onePx;
        right = (hsLeft + hhandle[0].offsetWidth) * hScroll._scrollData.onePx;
        leftIdx = this._sortProcess(colWtColl, left);
        sheet._leftCol = { idx: leftIdx, value: colWtColl[leftIdx] };
        rightIdx = this._sortProcess(colWtColl, right);
        sheet._rightCol = { idx: rightIdx, value: colWtColl[rightIdx] };
    }

在这段代码中运行需要1500ms。,offsetLft需要1100 ms。我怎么能减少这个。平均运行时间为350毫秒。

1 个答案:

答案 0 :(得分:0)

offset *属性要求页面流是最新的。如果您之前对DOM或样式进行了更改,使当前计算的流程无效,那么获取offsetLeft将导致浏览器重排页面。这是需要时间的回流。如果您尚未进行此类更改,则offsetLeft可以使用当前页面流并且速度很快。

所以问题不是offsetLeft本身,而是自上次页面重排以来JS之前的问题。