在DOMContentLoaded

时间:2016-08-12 18:58:54

标签: javascript html dom local-storage

在DOM更新后向元素添加事件监听器时遇到了一些麻烦。

我有一些页面,排序两个列表并保存舞台。 我可以通过d& d和点击特殊按钮在这个列表之间移动元素。它对我来说很好。

https://jsfiddle.net/bmj32ma0/2/

但是,我必须保存这个列表的阶段,并且在重新加载后我必须提取阶段,所以我在下面编写代码。

    function saveFriendsLists(e) {
    if(e.target.classList.contains("b--drugofilter--save-button")){
        var vkFriends = document.querySelector('.b--friends-from-vk .js--friends-container').innerHTML;
        var choosenFriends = document.querySelector('.b--friends-choosen .js--friends-container').innerHTML;
        localStorage.setItem('vkFriends', vkFriends);
        localStorage.setItem('choosenFriends', choosenFriends);
    }
}

function loadFriensListFromStorage() {
    if(localStorage&&localStorage.choosenFriends&&localStorage.vkFriends){
        document.querySelector('.b--friends-from-vk .js--friends-container').innerHTML = localStorage.vkFriends;
        document.querySelector('.b--friends-choosen .js--friends-container').innerHTML = localStorage.choosenFriends;
    }
}

document.addEventListener("DOMContentLoaded", loadFriensListFromStorage);

但添加此功能后,D& D等预览功能无效。我无法为您提供有效的jsfidle,因为我可以理解,localStoradge原因或其他原因。

当我尝试将addEventListener移动到loadFriensListFromStorage函数时,如下所示:

function loadFriensListFromStorage() {
        if(localStorage&&localStorage.choosenFriends&&localStorage.vkFriends){
            document.querySelector('.b--friends-from-vk .js--friends-container').innerHTML = localStorage.vkFriends;
            document.querySelector('.b--friends-choosen .js--friends-container').innerHTML = localStorage.choosenFriends;
        }

    [].forEach.call(friends, function(friend) {
          friend.addEventListener('dragstart', handleDragStart, false);
    });
}

但这没有任何效果。

如何解决此问题? THX。

0 个答案:

没有答案