【问题标题】:How do I splice my array?如何拼接我的阵列?
【发布时间】:2014-03-20 15:07:46
【问题描述】:

我有一个收藏功能,但希望用户能够删除它们。

这就是它的样子:

所以我想要实现的是每个调用删除函数的项目下的“删除”链接,从而删除该实体。

这是我的 JS:

function updateFavourite(video) {
    document.getElementById('favourite').onclick = function () {
        if ($.grep(myfavourite, function (item) {
            return item["id"] == video["id"];
        }).length == 0) {
            blacklist[video["id"]] = true;
            myfavourite.push(video);
            var html = "<li class=\"history\">" +
                "<img class= \"img-rounded\" src=\"{0}\"/>" +
                "<p><b title=\"{2}\"><a class=\"extendedLink\" href=\"javascript:watchFavouriteVideo(\'{1}\');\"><span></span>{2}</a></b><br>" +
                "by {3}<br>" +
                "{4} | {5} views</p>" +
                "</li>";

            $("#myfavourite").prepend(html.format(video["thumbnail"],
                video["id"],
                video["title"],
                video["uploader"],
                video["length"],
                video["views"]));
        }
    }
}

function remove(video) {
    document.getElementById('remove').onclick = function () {
        myfavourite.splice(video, 1);
    }
}

问题是它没有移除视频,也不知道如何为每个实体添加“移除”文本。

【问题讨论】:

  • 您遇到的问题是?
  • 所以主要问题是如何添加“删除”按钮或事件?因为没有这个,那么删除视频的次要问题就是静音..
  • 当然可以,但是要实现第二个目标,您需要完成第一个目标。尝试为您的第一个问题创建一个简单的jsFiddle,将“text”和“click”处理程序添加到从数组创建的一些元素中。然后也许我们可以处理有关“文本”和处理程序的具体帮助。
  • @Xotic750:你的意思是 moot
  • 哈哈,确实!

标签: javascript jquery arrays splice


【解决方案1】:

这是一个例子

HTML

<div id="favourites"></div>
<div id="displayList"></div>

CSS

#favourites {
    width:auto;
    height:100px;
}
.favourite {
    width:auto;
    height: auto;
    margin-right:10px;
    background-color:cyan;
    float:left;
}
.title {
    width:auto;
    height: auto;
    background-color:red;
    border:0px;
    text-align:center;
}
.picture {
    width:50px;
    height: 50px;
    background-position:center;
    display:block;
    margin:0 auto;
}
.remove {
    width:auto;
    height: auto;
    text-align:center;
}
.remove:hover {
    cursor:pointer;
    background-color:yellow;
}
#displayList {
    min-height:20px;
    clear:both;
    border:1px solid black;
}

Javascript

var picsArray = [
        'http://upload.wikimedia.org/wikipedia/commons/1/1b/Beys_Afroyim_with_son_%28cropped%29.jpg',
        'http://upload.wikimedia.org/wikipedia/commons/8/8a/Tammam_Salam.jpg',
        'http://upload.wikimedia.org/wikipedia/commons/2/27/Ratusz2007.jpg',
        'http://upload.wikimedia.org/wikipedia/commons/6/60/GPN-2000-001979.jpg'
    ],
    list = picsArray.slice(),
    favourites = document.getElementById('favourites'),
    displayList = document.getElementById('displayList');

function emptyNode(node) {
    while (node.firstChild) {
        node.removeChild(node.firstChild);
    }
}

function updateDisplayList() {
    emptyNode(displayList);
    list.map(function (entry) {
        return entry.split('/').slice(-1)[0];
    }).forEach(function (shortEntry) {
        var p = document.createElement('p');

        p.appendChild(document.createTextNode(shortEntry));
        displayList.appendChild(p);
    });
}

list.forEach(function (pic) {
    var favourite = document.createElement('div'),
        title = document.createElement('div'),
        img = document.createElement('img'),
        remove = document.createElement('div');

    favourite.className = 'favourite';
    title.className = 'title';
    img.className = 'picture';
    remove.className = 'remove';

    title.appendChild(document.createTextNode('Favourite'));
    favourite.appendChild(title);

    img.src = pic;
    favourite.appendChild(img);

    remove.appendChild(document.createTextNode('Remove'));
    remove.addEventListener('click', function (e) {
        e.target.parentNode.parentNode.removeChild(e.target.parentNode);
        list = list.filter(function (ele) {
            return ele !== e.target.previousSibling.src;
        });

        updateDisplayList();
    }, false);

    favourite.appendChild(remove);
    favourites.appendChild(favourite);
});

updateDisplayList();

开启jsFiddle

【讨论】:

  • jsFiddle 对我来说工作正常,我建议您没有将示例正确迁移到您自己的项目中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-20
  • 2015-05-31
  • 2017-08-21
  • 2021-10-14
  • 2023-03-31
  • 2019-05-06
  • 1970-01-01
相关资源
最近更新 更多