【问题标题】:My array wont splice [duplicate]我的阵列不会拼接[重复]
【发布时间】:2026-02-12 01:05:02
【问题描述】:

它完成了方法中的所有操作(例如,alert/div 加载),但拼接不起作用。所以我要做的是当用户单击“删除”按钮时,该特定视频将从数组中删除。

代码:

function updateFavourite(video) {
    document.getElementById("favourite").onclick = function () {
        blacklist[video["id"]] = true;
        myfavourite.push(video);
        var html =
        "<input class='removeButton' value='Remove' type='button' />" +
        "<li class=\"saved\">" +
            "<img class= \"img-rounded\" src=\"{0}\"/>" +
            "<p><b title=\"{2}\"><a class=\"extendedLink\" href=\"javascript:watchHistoricVideo(\'{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"]));
        $("#myfavourite .removeButton").click(function () {
            myfavourite.splice(video, 1);
            setVideoF(video);
            alert("Removed");
            document.getElementById("myfavourite").innerHTML = '<div id="myfavourite"></div>';
            $("#loadFavourite").trigger('click');
        });
        setVideoF(video);
    }
}

【问题讨论】:

标签: javascript html arrays function splice


【解决方案1】:

http://www.w3schools.com/jsref/jsref_splice.asp

第一个 splice 参数必须是整数 - 您要删除的元素的索引

显然你正在传递一个对象

【讨论】:

    【解决方案2】:

    如果您只想删除 video 对象,您可以执行以下操作,因为您首先需要它在数组中的索引(如 doodeec 所说)...

    function Remove(arr, obj) {
        var index = arr.indexOf(obj);
    
        if (index != -1) {
            arr.splice(index, 1);
        } else {
            throw new Error("Not in array")
        }
    };
    

    只需致电Remove(myfavourite, video); 即可对其进行排序。

    【讨论】:

    • 我添加了一个警告框,它显然正在拼接,但是当我刷新页面时它仍然存在。