javascript - 仅在具有相同类名的特定项目上运行 Javascript 函数

标签 javascript function

如果不使用 jQuery,如何仅在与其他项目具有相同类名的一项上运行函数?

我有一个 WordPress 循环,每个项目都有一个按钮来对 div 中的图像运行函数。

这是在页面上重复 10 次的循环项:

 <li id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
     <div class="block bg-white relative mt-7 work__image-wrap">
       <a href='<?php echo types_render_field("website-url"); ?>' target="_blank">
        <?php echo '<img class="item absolute pin-t w-full h-auto pin-l" src="'. $workitem .'" alt="'. the_title() .'"/>';?>
       </a>
      </div>
       <div class="button-wrap">
        <button id="portScroll">Scroll Down</button>
       </div>
       <div class="p-2">
        <h3 class="text-black font-bold pt-4 pb-2"><a class="text-black font-bold" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
       </div>
    </li>

当用户单击按钮时,该函数会更改 CSS,使其向上滚动。

如何仅对循环中的项目运行该函数?

这是我运行该函数的 JS。它在第一个循环项目上运行良好,但在其他循环项目上则不然。

function scrollDown() {
    var portImg = document.getElementById('item');
    var height = portImg.clientHeight;
    console.log(height);
    var pos = 0;
    var id = setInterval(frame, 5);

    function frame() {
        if (pos == height) {
            clearInterval(id);
        } else {
            pos--;
            portImg.style.top = pos + 'px';
        }
    }
}

最佳答案

class 替换按钮的 id 属性:

<button class="portScroll">Scroll Down</button>

定义按钮点击处理程序,如下所示:

for (const button of document.querySelectorAll('button.portScroll')) {
    button.addEventListener("click", scrollDown);
}

在函数scrollDown中获取图像如下:

var portImg = this.parentNode.parentNode.querySelector('img.item');

或者,另一种选择:

var portImg = this.closest('li').querySelector('img.item');

关于javascript - 仅在具有相同类名的特定项目上运行 Javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54959935/

相关文章:

javascript - 使用自定义标签值 jquery 获取元素 id

c++函数解析选择模板化版本而不是普通函数

function - 调用数组中所有元素的函数

javascript - 简单的 javascript 函数 - if 语句未触发?

c - 使用在 main1() 中生成的值并在 main2() 中使用它们

带参数的 JavaScript 和 C++ 回调函数

java - 网站安全: what does it mean to infect people with silent java drive?

javascript - 样式建议下拉菜单

javascript - 使用 jquery、html 和 css 显示多个文件上传的多个进度条

javascript - Twilio 聊天输入()不起作用