简体   繁体   English

删除功能无法正常工作。 怎么了?

[英]Delete function doesn't work properly. What's wrong?

This is my HTML(list of people)这是我的 HTML(人员列表)

  <button class="btn btn-primary btn-block" id="add_user">Add new user</button>
    <ul id="users_list" contenteditable="true">       
        <li class="user_data">
            <img      src="http://img.dunyanews.tv/blog_user_images/anchors//15_user_icon.png" alt="44user" class="user_image" />
            <div class="user_data_id text-left">Id:></div>
            <div class="user_data_username text-left">Username:</div>
            <div class="user_data_firstname text-left">Firstname:</div>
            <div class="user_data_lastname text-left">Lastname:</div>
            <button class="btn btn-danger delete_user">X</button>
        </li>
    </ul> 

This is my Javascript (one function for adding and one for deleting).这是我的 Javascript(一种用于添加,一种用于删除)。 First work well, but second (deleting) - delete only first (or [0] ) element第一个效果很好,但第二个(删除) - 只删除第一个(或[0] )元素

 var addUser = document.getElementById('add_user'),
    usersList = document.getElementById('users_list'),
    userTemplate = document.getElementsByClassName('user_data');
    deleteUser = document.getElementsByClassName('delete_user');
    
    //Function for adding elements
    addUser.addEventListener('click', (function() {
    var newUser = userTemplate[0].cloneNode(true);
    usersList.appendChild(newUser);        
  }));  
    //Function for deleting element
    for (i = 0; i < deleteUser.length; i++) {
      (function(e) { 
          deleteUser[e].addEventListener('click', (function() {            
            usersList.removeChild(userTemplate[e]);
        }));
      })(i);
    }

Try this code:试试这个代码:

I changed the display on the default template to hidden so we will also have one user to clone from.我将默认模板上的显示更改为隐藏,这样我们也将有一个用户可以从中克隆。 Otherwise, the user can delete all and we have nothing to clone from.否则,用户可以删除所有内容,而我们无法从中克隆任何内容。

<button class="btn btn-primary btn-block" id="add_user">Add new user</button>
<ul id="users_list" contenteditable="true">
    <--! This display none is important -->
    <li class="user_data" style="display: none;">
        <img src="http://img.dunyanews.tv/blog_user_images/anchors//15_user_icon.png" alt="44user" class="user_image" />
        <div class="user_data_id text-left">Id:></div>
        <div class="user_data_username text-left">Username:</div>
        <div class="user_data_firstname text-left">Firstname:</div>
        <div class="user_data_lastname text-left">Lastname:</div>
        <button class="btn btn-danger delete_user">X</button>
    </li>
</ul>

To make sure we are deleting the correct user, I added an array of names for testing.为了确保我们删除的是正确的用户,我添加了一组名称用于测试。

var names = ['Noah', 'Sophia', 'Liam', 'Emma', 'Jacob', 'Olivia', 'Mason', 'Isabella', 'William', 'Ava', 'Ethan', 'Mia', 'Michael', 'Emily', 'Alexander', 'Abigail', 'Jayden', 'Madison', 'Daniel', 'Elizabeth'];
var addUser = document.getElementById('add_user'),
    usersList = document.getElementById('users_list'),
    userTemplate = document.getElementsByClassName('user_data');
    deleteUser = document.getElementsByClassName('delete_user');

    //Function for adding elements
    addUser.addEventListener('click', (function() {
        var newUser = userTemplate[0].cloneNode(true);

        // add name to user so we can test.
        newUser.getElementsByClassName('user_data_firstname')[0].innerHTML += ' ' + names.pop();

        // make this user visible
        newUser.style.display = '';

        // Wire click event to remove this user.
        newUser.getElementsByClassName('delete_user')[0].addEventListener('click', (function() {            
            usersList.removeChild(newUser);
        }));

        usersList.appendChild(newUser);
    }));

    // Add one user
    addUser.click();

Note: You start with one user and you loop through the user list to add the remove, so when new users are added, the click to remove event is not wired.注意:您从一个用户开始,然后循环遍历用户列表以添加删除,因此当添加新用户时,点击删除事件不会被连接。

I removed the loop and wire it as we add a new user.我删除了循环并在我们添加新用户时连接它。

Obviously our code will fail if we click on add users and we run out of names, but that's enough for our test.显然,如果我们单击添加用户并且我们用完了名称,我们的代码将会失败,但这对我们的测试来说已经足够了。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 我正在猜测数字项目,但我的 if else 似乎无法正常工作。 我究竟做错了什么? - im doing a guess the number project but my if else doesn't seem to work properly. what am i doing wrong? 单页导航无法正常工作。 为什么? - Onepage navigation doesn't work properly. Why? 推特按钮无法正常工作。 jQuery的 - Tweet button doesn't work properly. jQuery 在Rails中使用jquery ajax无法正常工作。 - Using jquery ajax in Rails doesn't work properly. Nodemailer不起作用,怎么了? - Nodemailer doesn't work, what's wrong? 我的代码有什么问题? (第二个on(单击)功能不起作用) - What's wrong with my code? (second on(Click) function doesn't work) 我为自动化 web 组件创建而创建的 Javascript function 不起作用。 怎么了? - The Javascript function i created to automate web component creation doesn't work. What's wrong? 我的代码中的“ animate()”函数不起作用,但“ css()”却起作用。 怎么了? - the 'animate()' function my code doesn't work but 'css()' does. what's wrong? 将代码移至函数中。 现在不起作用。 怎么了? - Moved code into a function. Now doesn't work. What's wrong? 此功能有什么问题? 不返回我指定的内容 - What's wrong with this function? Doesn't return what I specified
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM