循环数组并获取先前值时第一项的特例?

时间:2018-03-28 11:25:00

标签: javascript ecmascript-6

我目前正在执行此操作,以存储每个项目的高度,以便稍后通过css访问它:

children[0].style.setProperty('--previousHeight', 0+'px');
children.forEach((child, i) => {
    if(i > 0 ){
        var height = children[i-1].offsetHeight;
        child.style.setProperty('--previousHeight', height+'px');
    }
})

我想把第一个项目更像是另一个。像

这样的东西
height = offsetHeight || 0;

但我不确定如何以易于理解的方式做到这一点

3 个答案:

答案 0 :(得分:2)

应该是:

children.forEach((child, i) => {
    var height = children[i-1] && children[i-1].offsetHeight || 0;
    child.style.setProperty('--previousHeight', height+'px');
})

如果您不熟悉:

var height = children[i-1] && children[i-1].offsetHeight || 0;

它给出的结果与:

相同
var height = children[i-1] ? children[i-1].offsetHeight : 0;

答案 1 :(得分:0)

这应该是最快捷,最干净的方式。

<div id='myElement'>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
</diV>
<script>
    var children = document.getElementById('myElement').children;
    var h = children[0].offsetHeight;
    for(var i in children){
        if( i > 0 ){
            children[i].style['height'] = h;
            children[i].style.setProperty('--previousHeight', h);                
        }            
    }
</script>

答案 2 :(得分:0)

这就是我最终做的事情:

    children.forEach((child, i) => {
        var height = 0 
        if(i > 0 ){
            var height = children[i-1].offsetHeight;
        }
        child.style.setProperty('--previousHeight', height+'px');
    })