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需要1100ms。我如何减少这个。这350毫秒的平均运行时间。

最佳答案

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

因此,问题不在于offsetLeft本身,而是自上次页面重排以来位于其前面的JS。

09-25 20:49