При установке функции onClick для динамически создаваемой кнопки, функция запускает onload - PullRequest
0 голосов
/ 31 октября 2019

В настоящее время я создаю программу, которая использует localStorage для создания сайта с функциональностью, подобной списку пожеланий. Однако, когда я иду, чтобы создать HTML-страницу, которая должна создать список желаний с фотографией элемента, именем и кнопкой, чтобы удалить этот элемент из списка. Но когда я назначаю кнопке функцию onClick, она запускается при загрузке страницы, а не при нажатии. У меня есть четыре основные функции java-скрипта, одну для добавления в локальное хранилище, одну для удаления из локального хранилища, вспомогательную функцию для удаления и одну, которая создаст страницу списка желаний (где проблема).

function genWishListPage(){

    for (var i = 0; i < localStorage.length; i++) {

        var item = getWishlist(i);
        var name = document.createElement("p");
        var removeButton = document.createElement("button");
        var image = document.createElement("img")

        image.src = item.image;


        removeButton.innerText = "Remove from wishlist";
        removeButton.onClick = RemoveFromWishList(item.name);
        removeButton.setAttribute("ID","remove");
        name.innerText = item.name;
        document.body.appendChild(image);
        document.body.appendChild(name);
        document.body.appendChild(removeButton);
        document.body.appendChild(document.createElement("BR"));

        //removeButton.setAttribute("onclick", RemoveFromWishList(item.name));
        //removeButton.addEventListener('click', RemoveFromWishList(item.name));
        //document.getElementById("remove").addEventListener("click",RemoveFromWishList(item.name));
    }
}

Закомментированные части - это способы, которые я уже пробовал и получил ту же ошибку.

Любая помощь или совет приветствуется.

1 Ответ

0 голосов
/ 31 октября 2019

Когда вы пишете removeButton.onClick = RemoveFromWishList(item.name);, вы присваиваете возвращаемое значение вызова функции событию onClick. Вместо этого вы можете написать

removeButton.onClick = function() { RemoveFromWishList(item.name);}

. Вы должны назначить функцию для прослушивателя событий onClick.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...