Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 具有隐藏溢出子项的表单元格的高度_Javascript_Jquery_Html_Css_Angularjs - Fatal编程技术网

Javascript 具有隐藏溢出子项的表单元格的高度

Javascript 具有隐藏溢出子项的表单元格的高度,javascript,jquery,html,css,angularjs,Javascript,Jquery,Html,Css,Angularjs,我想获得具有嵌套子项的表单元格内容的实际高度,这些子项可能包含overflow:hidden样式,如下所示: <tr> <td id="targetid"> <div id="innertargetdiv"> <div id="targetiddiv" style="overflow:hidden; max-height:50px;"> Thiscell<br&g

我想获得具有嵌套子项的表单元格内容的实际高度,这些子项可能包含overflow:hidden样式,如下所示:

<tr>
    <td id="targetid">
        <div id="innertargetdiv">
            <div id="targetiddiv" style="overflow:hidden; max-height:50px;">
                Thiscell<br>
                Thiscell<br>
                Thiscell<br>
                Thiscell<br>
                Thiscell<br>
                Thiscell<br>
                Thiscell<br>
                Thiscell<br>
                Thiscell<br>
                Thiscell<br>
            </div>
        </div>
    </td>
    <td>Smith</td>
    <td>50</td>
  </tr>
输出: 51 50 一百

如何从targetid级别获取完整高度? 我不想让内容填满整个单元格,我只想知道整个高度。AngularJS/JQuery也是选项

问题的可能递归解决方案:

var totalHeight: (any) => number = (e) => {
                var eHeight = 0;

                if (e.hasChildNodes()) {
                    eHeight = $.map(e.children, (child) => totalHeight(child))
                        .reduce((sum: number, value: number) => sum + value, 0);
                }

                //The height of the child elements might be smaller than the element with padding
                return Math.max.apply(Math, [eHeight, e.scrollHeight]);
            };

根据您的评论,下面是一个克隆元素的示例

const targetElm=document.getElementById'targetid' const clonedElm=document.createElement'div' setAttribute'id','clonedTarget' clonedElm.style.visibility='hidden' clonedElm.innerHTML=targetElm.innerHTML.replace/target/g,“克隆” const body=document.getElementsByTagName'body'[0] 克隆榆体 document.getElementById'cloneiddiv'。样式= const height=document.getElementById'innerclonediv'.scrollHeight document.getElementById'clonedTarget'。删除 控制台高度 这个细胞 这个细胞 这个细胞 这个细胞 这个细胞 这个细胞 这个细胞 这个细胞 这个细胞 这个细胞 史密斯 50
你有最大高度:50px,所以你会得到这个高度,假设没有空间被占用。是的,另一种从targetid级别得到100高度的方法?它还可能意味着克隆dom元素,操纵其css。。表中的某些行肯定会有溢出的内容。我也在考虑一个可能的递归解决方案,但上面发布的方法在浮动元素方面存在问题,因为如果两个同级在流动,并且高于它们的cod总和,则不会显示父级的真实高度。。。我应该只带垂直标记的兄弟姐妹,不知道如何做我想知道AngularJS是否是另一种方法,我可以在链接阶段获得DOM元素并在代码中绑定数据?克隆元素,这是性能问题吗?或者可以接受吗?那么更通用的方法呢?like:innertargetdiv有未知数量的子节点,每个子节点都可能有嵌套的子节点,这些子节点都有隐藏的溢出内容,看到了吗?
var totalHeight: (any) => number = (e) => {
                var eHeight = 0;

                if (e.hasChildNodes()) {
                    eHeight = $.map(e.children, (child) => totalHeight(child))
                        .reduce((sum: number, value: number) => sum + value, 0);
                }

                //The height of the child elements might be smaller than the element with padding
                return Math.max.apply(Math, [eHeight, e.scrollHeight]);
            };