Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.02.2018, 16:41
Аспирант
Отправить личное сообщение для marc Посмотреть профиль Найти все сообщения от marc
 
Регистрация: 02.12.2017
Сообщений: 81

Не работает событие "click"
Привет, есть такой вот код, и когда я клацаю мышкой по корзине должен появиться "click" в консоли, но у меня он не появляется, что неправильно?
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link href="https://use.fontawesome.com/releases/v5.0.6/css/all.css" rel="stylesheet">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
</head>
<body>
<section class="todo-list-wrapper mt-5">
    <div class="container">
        <div class="card">
            <div class="card-header">
                Todo list
            </div>
            <ul class="list-group list-group-flush"></ul>
        </div>
    </div>
</section>
 
<script src="main.js"></script>
</body>
</html>

let tasks = [
    "Выучить JavaScript",
    "Выучить Angular 4",
    "Выучить React"
];
 
let ul = document.querySelector('.list-group');
let removeBtns = document.getElementsByClassName('removeBtns')
 
function listTemplate(task) {
    //create tag li
    let li = document.createElement('li');
    li.innerText = task;
    li.className = 'list-group-item d-flex';
    //create tag i
    let i = document.createElement('i');
    i.className = 'fas fa-trash-alt ml-auto remove-list-item';
    //append i to li
    li.appendChild(i);
    //return element i
    return li;
}
 
function generateList(tasksArray) {
    clearList();
 
    for ( let i = 0; i < tasksArray.length; i++){
        let liTemplate = listTemplate(tasksArray[i]);
        ul.appendChild(liTemplate);
    }
 
    setListeners();
}
 
function addTask(string) {
    if ( !string || typeof string !== 'string') return new Error('Не передана строка');
    if ( !string.length ) return new Error('Строка не должна быть пустой');
 
    tasks.unshift(string);
 
    generateList(tasks);
}
 
function clearList() {
    ul.innerHTML = '';
}
 
function editTask(task, updtask) {
 
    let currentTask = tasks.indexOf(task);
    tasks[currentTask] = updtask;
    generateList(tasks);
 
 
}
 
function deleteTask(task) {
    let currentTask = tasks.indexOf(task);
    if( currentTask !== -1){
        tasks.splice(currentTask, 1);
        ul.children[currentTask].remove();
    } else {
        console.warn('Задача не обнаружена');
    }
}
 
function setListeners() {
 
    //set listeners at remove btns
    for ( let i = 0; i < removeBtns.length; i++){
        removeBtns[i].addEventListener('click', function (e) {
            console.log(this);
 
        })
    }
}
 
 
//Генерация списка при загрузке страницы
generateList(tasks);
Ответить с цитированием
  #2 (permalink)  
Старый 09.02.2018, 16:50
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 2,113

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
<body>
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link href="https://use.fontawesome.com/releases/v5.0.6/css/all.css" rel="stylesheet">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
</head>
<body>
<section class="todo-list-wrapper mt-5">
    <div class="container">
        <div class="card">
            <div class="card-header">
                Todo list
            </div>
            <ul class="list-group list-group-flush"></ul>
        </div>
    </div>
</section>
 
  


<script>

let tasks = [
    "Выучить JavaScript",
    "Выучить Angular 4",
    "Выучить React"
];
 
 let ul = document.querySelector('.list-group');
 
function listTemplate(task) {
    //create tag li
    let li = document.createElement('li');
    li.innerText = task;
    li.className = 'list-group-item d-flex';
    //create tag i
    let i = document.createElement('i');
    i.className = 'fas fa-trash-alt ml-auto remove-list-item removeBtns';
    //append i to li
    li.appendChild(i);
    //return element i
    return li;
}

let removeBtns = document.getElementsByClassName('removeBtns');
 
function generateList(tasksArray) {
    clearList();
 
    for ( let i = 0; i < tasksArray.length; i++){
        let liTemplate = listTemplate(tasksArray[i]);
        ul.appendChild(liTemplate);
    }
 
    setListeners();
}
 
function addTask(string) {
    if ( !string || typeof string !== 'string') return new Error('Не передана строка');
    if ( !string.length ) return new Error('Строка не должна быть пустой');
 
    tasks.unshift(string);
 
    generateList(tasks);
}
 
function clearList() {
    ul.innerHTML = '';
}
 
function editTask(task, updtask) {
 
    let currentTask = tasks.indexOf(task);
    tasks[currentTask] = updtask;
    generateList(tasks);
 
 
}
 
function deleteTask(task) {
    let currentTask = tasks.indexOf(task);
    if( currentTask !== -1){
        tasks.splice(currentTask, 1);
        ul.children[currentTask].remove();
    } else {
        console.warn('Задача не обнаружена');
    }
}
 
function setListeners() {
 
    //set listeners at remove btns
    for ( let i = 0; i < removeBtns.length; i++){
        removeBtns[i].addEventListener('click', function (e) {
            console.log(this);
 
        });
    }
}
 
 
//Генерация списка при загрузке страницы
generateList(tasks);

</script>
</body>
</html>


нужного класса на корзинах не было

Последний раз редактировалось j0hnik, 09.02.2018 в 17:55.
Ответить с цитированием
  #3 (permalink)  
Старый 09.02.2018, 17:11
Аспирант
Отправить личное сообщение для marc Посмотреть профиль Найти все сообщения от marc
 
Регистрация: 02.12.2017
Сообщений: 81

j0hnik,
а что делать, если теперь не высвечиваются пункты(tasks)?
Ответить с цитированием
  #4 (permalink)  
Старый 09.02.2018, 17:16
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 2,113

где должны высвечиваться?
Ответить с цитированием
  #5 (permalink)  
Старый 09.02.2018, 17:23
Аспирант
Отправить личное сообщение для marc Посмотреть профиль Найти все сообщения от marc
 
Регистрация: 02.12.2017
Сообщений: 81

j0hnik,
извините, я уже обнаружил проблему и исправил. Получается оно не срабатывало из-за того, что "let removeBtns = document.getElementsByClassName('removeBtns');", был объявлен не там?
Ответить с цитированием
  #6 (permalink)  
Старый 09.02.2018, 17:25
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 2,113

и обратите внимание на 50 строку
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает событие. farand_777 jQuery 5 15.11.2013 00:24
Ajax при заходе на страницу из поисковика - не работает Алексей_ГР Ваши сайты и скрипты 2 02.09.2013 23:03
Помогите не работает событие motoroller jQuery 2 01.04.2011 22:38
Doctype и javascript: не работает событие в Internet exproler nastya Internet Explorer 0 23.03.2011 11:26
ява-скрипт выборочно работает-не работает zeta777 Internet Explorer 0 20.01.2010 10:41