我正在创建显示猫列表的内容,然后在单击图像时增加一个计数器。我已经完成所有工作,因此当单击图像时,当我将其记录到控制台时,它会增加整数。唯一的问题是在页面上计数器不会增加,而是保持为零静态。

这是我的代码。我试图创建一个更新函数,该函数将所有带有class标记的东西带走,然后循环遍历它,用相同的东西替换HTML,从而重绘文本。

但是,它不起作用。任何帮助,将不胜感激!

var HTMLcatName = '<h1>%data%</h1>';
var HTMLcatImage = '<img id="cat" src="%data%">';
var HTMLcatCounter = '<p class="counter">Number of clicks: %data%</p>';
var noCats = 'No cats selected m8';

var cats = {

    "name": ["Monte", "Jib"],
    "image": ["images/monte.jpg", "images/jib.jpg"],
    "clicks": [0, 0],

    display: function () {

        for (i = 0; i < cats.image.length; i++) {

            formattedCatNames = HTMLcatName.replace("%data%", cats.name[i]);
            var catNames = formattedCatNames;

            formattedCatImages = HTMLcatImage.replace("%data%", cats.image[i]);
            var catImages = formattedCatImages;

            formattedCatCounter = HTMLcatCounter.replace("%data%", cats.clicks[i]);
            var catCounter = formattedCatCounter

            var elem = document.createElement('div');
            elem.innerHTML = catNames + catImages + catCounter;

            elem.querySelector('img').addEventListener('click', (function(catCountUp) {
                return function() {
                    cats.clicks[catCountUp]++;
                    update();
            };
        })(i));
            document.body.appendChild(elem);
        }
    },
}

cats.display();

var getCounterClass = document.getElementsByClassName("counter");

var update = function() {

    for (j = 0; j < getCounterClass.length; j++) {
        getCounterClass[j].innerHTML = '<p class="counter">Number of clicks: ' + cats.clicks[j] + '</p>';
    }
}

最佳答案

我看不到click事件,但这可能是错误:

 getTags.innerHTML = '<p class="counter">Number of clicks: ' + cats.clicks[j] + '</p>';


用。。。来代替

getTags[j].innerHTML = 'Number of clicks: ' + cats.clicks[j];


您在for循环中缺少用于定位正确元素的计数器

07-24 19:20
查看更多