javascript addEventListeners

时间:2019-11-26 20:02:14

标签: javascript php html

我有一个很长的div列表,每个列表都有一个具有相同类名的按钮,该按钮用于使表单出现并提示用户添加新任务。为此,我需要将任务添加到的正确列表ID。由于该表单是div的外部形式,因此该表单只能包含一个全局列表列表,因此我不知道该任务的附加对象。

这是显示所有列表的HTML

<?php foreach($Liste as $lista) :?>


    <div class="list-container">
        <h1><?= $lista->getNome() ?></h1>

        <div class="tasks">
            <?php $compiti=$lista->loadCompiti();

            ?>
            <?php foreach($compiti as $compito) :?>
                <div class="task-container">
                    <h3 class="task-title"><?=$compito->getNome() ?></h3>
                    <p> Due date: <?=$compito->getDueDate()?></p>
                </div>
            <?php endforeach; ?>

        </div>

        <button class="addTask">Add Task</button>
    </div>

<?php endforeach; ?>

这是在列表之一中单击“添加任务”时出现的提示

<div class="appear hide " id="taskAdder">
    <button class="hideB" id="hideBTN">X</button>

    <form action="/task/add" method="post">
        <input type="text" name="NomeTask" placeholder="Task name">
        <input type="text" name="dueDate" placeholder="date" >
        <textarea name="desc" placeholder="description" rows="4" cols="50"></textarea>
        <button type="submit">Create</button>
    </form>
</div>

这是在此后面运行的js

let form = document.getElementById('form');
let button= document.getElementById('prompt');
let hide = document.getElementById('hideBTN');


let tasksBTN=document.getElementsByClassName('addtask');
let taskAdder=document.getElementById('taskAdder');

for(let i=0; i<tasksBTN.length; i++){
    tasksBTN[i].addEventListener('click', ()=>appear());
}

button.onclick=function () {
    form.classList.remove('hide');

};



hide.onclick=function () {

    form.classList.add('hide');
};

function appear() {
    taskAdder.classList.remove('hide');
}

1 个答案:

答案 0 :(得分:0)

您的事件处理程序可以接受一个参数,使您可以访问被单击的按钮。然后,您可以检查其ID或在DOM中的位置,以确定它是哪个按钮。

您的循环:

for(let i=0; i<tasksBTN.length; i++){
    tasksBTN[i].addEventListener('click', ()=>appear());
}

成为:

for(let i=0; i<tasksBTN.length; i++){
    tasksBTN[i].addEventListener('click', appear);
}

处理程序:

function appear() {
    taskAdder.classList.remove('hide');
}

成为:

function appear(e) {
    e.target.classList.remove('hide');
}