JS函数addEventListener仅适用于列表的第一个元素

dgoldfeder

我显示一个用户列表,在每个用户的末尾添加两个按钮,一个用于编辑,另一个用于删除用户,我的大问题是只有列表中第一个元素的按钮可以工作。

此代码显示我的列表

<tbody>
            <?php for( $i = 0; $i < count($users->datos); $i++ ): ?>
                <tr>
                    <td style="padding: 0 20px;"><?php echo $users->datos[$i]["email"  ]; ?></td>
                    <td style="padding: 0 20px;"><?php echo $users->datos[$i]["paterno"]; ?></td>
                    <td style="padding: 0 20px;"><?php echo $users->datos[$i]["materno"]; ?></td>
                    <td style="padding: 0 20px;"><?php echo $users->datos[$i]["nombre" ]; ?></td>
                    <td style="padding: 0 20px;">
                        <?php
                        echo preg_replace(PHONE_NUMBER, "($1) $2-$3", $users->datos[$i]["movil"]);
                        ?>
                    </td>
                    
                    <td id="botones">
                        <form id="ed" method="POST">
                            <input  type="hidden" id="token" name="token" value="<?php echo $users->datos[$i]["tokenA"]; ?>">
                            
                            <button type="submit" id="<?php echo $users->datos[$i]["id"]; ?>" class="buttonDelete"><i class="fas fa-trash-alt"></i></button>
                            <button type="submit" id="<?php echo $users->datos[$i]["id"]; ?>" class="buttonEdit"  ><i class="fas fa-edit"     ></i></button>
                        </form>
                    </td>
                </tr>
            <?php endfor; ?>
        </tbody>

这是我桌子的形象

这是我的JavaScript代码

const formEditDel = document.querySelector('form#ed');
const userDel = formEditDel.querySelectorAll('[class="buttonDelete"]')
const userEdit = formEditDel.querySelectorAll('[class="buttonEdit"]')


eventListeners();

function eventListeners(event) {

    userDel.forEach(button => {
        button.addEventListener('click', markDeleted);
    });

    userEdit.forEach(button => {
        button.addEventListener('click', userEdited);
    });

}

我真的不知道该怎么办,因此任何建议都会受到赞赏。

dgoldfeder

感谢@Taplar和@ imvain2,我可以得到这个问题的答案并了解其工作原理。感谢大伙们!

这是最终代码

const userDel  = document.querySelectorAll('.buttonDelete');
const userEdit = document.querySelectorAll('.buttonEdit');

eventListeners();

function eventListeners(event) {
    userDel.forEach(buttonDel => {
        buttonDel.addEventListener('click', markDeleted);
    });

    userEdit.forEach(buttonEdit => {
        buttonEdit.addEventListener('click', userEdited);
    });
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Javascript addEventListener 仅适用于第一个元素

悬停仅适用于列表的第一个元素

Snakemake expand() 仅适用于列表的第一个元素

javascript函数仅适用于第一个元素

jQuery函数仅适用于laravel中foreach的第一个元素

Javascript函数仅适用于第一个元素

JS 仅适用于第一个元素

JavaScript函数仅适用于具有类名称的第一个元素,而不适用于具有该类的所有元素

javascript效果仅适用于第一个元素,而不适用于其他元素?

为什么我的 jQuery show() 函数在 php foreach 循环中仅适用于第一个元素

array_map()仅适用于数组的第一个元素

javascript click事件仅适用于WebGrid MVC中的第一个元素

命令行参数仅适用于数组的第一个元素

Material Components Web-mdc附加仅适用于第一个元素

用jQuery添加类仅适用于第一个元素

查询数组仅适用于第一个元素

jQuery 代码仅适用于第一个元素

jQuery FadeOut仅适用于第一个元素

jQuery递归脚本仅适用于第一个元素

使用 Var CSS 时,动画仅适用于第一个元素

单击<li>列表仅适用于第一个

为什么JQuery函数仅适用于第一个文本框

组件功能仅适用于第一个组件Vue.js

bootstrap 4手风琴无法正常工作,仅适用于第一个元素

jQuery addClass 仅适用于多选下拉列表中的第一个选定子项

下面的 Excel VBA 函数仅适用于第一个 IF 条件,ELSEIF 不起作用

click事件监听器仅适用于从mongoDB和node.js生成的第一个列表项

Dropzone 实例适用于第一个元素但不适用于克隆元素(Vue)

多维数组的ActionListener仅适用于第一个按钮吗?