div上下循环移动

(function() {
    //向下移动
    var divContainer = document.getElementById('container');
    var listOfDiv = divContainer.getElementsByTagName('div');
    for(var i = 0; i < listOfDiv.length; ++i) {
        listOfDiv[i].currentIndex = i;
        var downBtn = document.createElement('button');
        downBtn.className = 'btn down';
        downBtn.innerHTML = '向下移动';
        downBtn.onclick = function() {
            var div = this.parentNode;
            var index = div.currentIndex;
            // 如果当前div已经是最后一个div,那么就把这个div放到所有div的开头
            if(index === listOfDiv.length - 1) {
                // 找到第一个div
                var firstDiv = listOfDiv[0];
                div.parentNode.insertBefore(div, firstDiv);
                // 把移动到开头的div的currentIndex设置为0
                div.currentIndex = 0;
                // 把除了开头以外的每个div,它的currentIndex属性都加1
                for(var u = 1; u < listOfDiv.length; ++u) {
                    listOfDiv[u].currentIndex = listOfDiv[u].currentIndex + 1;
                }
            } else {
                // 找到这个div的下一个div
                var nextDiv = div.parentNode.children[index + 1];
                div.parentNode.insertBefore(div, div.parentNode.children[index + 2]);
                div.currentIndex = index + 1;
                // 将下一个div的currentIndex属性也修改为正确的
                nextDiv.currentIndex = index;
            }
        };
        listOfDiv[i].appendChild(downBtn);
    }
    //向上移动
    for(var j = 0; j < listOfDiv.length; j++){
        listOfDiv[j].currentIndex = j;
        var upBtn = document.createElement('button');
        upBtn.className = 'btn up';
        upBtn.innerHTML = '向上移动';
        upBtn.onclick = function() {
            var div = this.parentNode;
            var index = div.currentIndex;
            // 如果当前div已经是最后一个div,那么就把这个div放到所有div的开头
            if(index === 0) {
                // 找到最后一个div
                var lastDiv = listOfDiv[listOfDiv.length];
                div.parentNode.insertBefore(div, lastDiv);
                // 把移动到开头的div的currentIndex设置为0
                div.currentIndex = listOfDiv.length - 1;
                // 把除了开头以外的每个div,它的currentIndex属性都加1
                for(var u = listOfDiv.length - 2; u >= 0; u--) {
                    listOfDiv[u].currentIndex = listOfDiv[u].currentIndex - 1;
                }
            } else {
                // 找到这个div的下一个div
                var nextDiv = div.parentNode.children[index - 1];
                div.parentNode.insertBefore(div, div.parentNode.children[index - 1]);
                div.currentIndex = index - 1;
                // 将下一个div的currentIndex属性也修改为正确的
                nextDiv.currentIndex = index;
            }
        };
        listOfDiv[j].appendChild(upBtn);
    }
})();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值