Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.04.2024, 17:50
Аватар для borus
Кандидат Javascript-наук
Отправить личное сообщение для borus Посмотреть профиль Найти все сообщения от borus
 
Регистрация: 07.12.2012
Сообщений: 147

Почему возникает ошибка с toggle?
Здравствуйте!
Делаю учебное задание(приложил архив).
При клике на любую карточку, отрисовываемую в index.html, в консоли возникает ошибка при вызове метода toggle, хотя видно, что переменная card, к которой применяется .classList.toggle() - это dom-объект(см. картинки в архиве)

Кто может сказать, почему?
Вложения:
Тип файла: zip 16_classes.zip (262.5 Кб, 4 просмотров)

Последний раз редактировалось borus, 17.04.2024 в 11:33.
Ответить с цитированием
  #2 (permalink)  
Старый 16.04.2024, 21:29
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

У тебя в аргументом card в функцию приходит не dom элемент li, а инстанс класса Card у которого есть свойство card в котором лежит dom элемент li, о чём тебе консоль и говорит.
Т.е. не card.classList.toggle( ... ) а card.card.classList.toggle( ... ). (Или использовать деструктуризацию на входе, если остальное из инстанса Card не нужно: function({card}){ card.classList.toggle( ... ) })
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 16.04.2024, 21:30
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

let card = new Card(ul, arr[i], function(card){
              // Здесь можно прописать логику игры.
              card.classList.toggle('hidden');

card - объект, созданный конструктором Card. Это не элемент html. Элемент внутри, в свойстве card.
Надо
card.card.classList.toggle('hidden');
Ответить с цитированием
  #4 (permalink)  
Старый 17.04.2024, 21:52
Аватар для borus
Кандидат Javascript-наук
Отправить личное сообщение для borus Посмотреть профиль Найти все сообщения от borus
 
Регистрация: 07.12.2012
Сообщений: 147

Здравствуйте!
Спасибо.
Получается тот card, который стоит после let передается сразу же в function()?
Ответить с цитированием
  #5 (permalink)  
Старый 18.04.2024, 00:03
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Тот или не тот - неизвестно*, из фактов только то, что в callback приходит инстанс класса Card. Глядя на код никак нельзя гарантировать, что он тот же самый. Но если следовать логике, то скорее всего тот же.

Сразу или не сразу - неизвестно*, из фактов только то, что callback когда-то таки вызывается. Глядя на код никак нельзя определить время вызова. Но если следовать логике, то раз существует callback - он вызывается скорее всего не сразу, а потом, после выполнения какого-то внутреннего асинхронного действия.

* Если код самописный - надо смотреть по коду, если нет - в документации.
__________________
29375, 35
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка Uncaught TypeError: Cannot read property '1' of null? orb jQuery 12 18.11.2020 03:12
Ошибка при обработке данных TBUCTEP Общие вопросы Javascript 11 12.05.2017 14:56
Почему ошибка при возвращении значения? Валерий1996 Общие вопросы Javascript 4 08.09.2015 13:46
Почему ошибка? - TypeError: adres.indexOf is not a function Veterinar jQuery 1 27.08.2015 01:25
Не понимаю почему возникает ошибка при перетаскивании satels jQuery 4 10.01.2010 03:57