2017-04-18 91 views
1

嗨,我有一个有n行的表格。我需要根据行高来计算总高度。下面的一个Typescript代码:通过循环计算总高度Javascript

private _getRowHeight(_params: any): number { 
    let totalRowHeight: number; 
    let maxHeight: number = 100; 
    let contentLength: number = 50; 
    for (let i in _params.data) { 
     if (i != "time" && _params.data[i] instanceof Array) { 
      let tempHeight: number = 100 * _params.data[i].length; 
      if (tempHeight > maxHeight) maxHeight = tempHeight; 
      for (let x in _params.data[i]){ 
       let tempContentHeight: number = 20 * _params.data[i][x].content.length; 
       if (tempContentHeight > contentLength) contentLength = tempContentHeight; 
      } 
     } 
    } 
    maxHeight += contentLength; 
    return maxHeight; 
} 

基本上maxHeight是每行的高度。我如何计算每个行的每个maxHeight或高度的总和并将其分配给变量totalRowHeight。请指教我。在此先感谢球员

+0

假设你有固定高度的_n_行,使用'rowArray.length * x'的问题是什么,其中x是以像素为单位的高度?如果行高变化,你可能更好的使用'ElementRef'和'.offsetHeight'来确定表格的高度。 – unitario

+0

Unitaro,可以告诉我如果你不介意 – blackdaemon

+0

单元,实际上行高不固定。它的变化 – blackdaemon

回答

1

假设每行的高度不固定(在这种情况下,一个简单的arrayOfRows.length * x就足够了),那么你可以使用ElementRefoffsetHeight得到高度,即:

import { Component, ElementRef } from '@angular/core'; 

@Component({ 
    selector: 'table-example', 
    template: '<table-example> ... </table-example>' 
}) 
export class TableExampleComponent { 

    totalRowHeight: number; 

    constructor(private elRef: ElementRef) {} 

    // make sure the view has been fully rendered with ngAfterViewInit 

    ngAfterViewInit() { 
     let totalRowHeight = this.elRef.nativeElement.offsetHeight; 
    } 
}