JavaScript: максимальная высота: NaN

На страницах коллекций нашего сайта Shopify кнопки СМОТРЕТЬ ДЕТАЛИ на каждой карточке продукта смещены из-за разной длины названия продукта. Чтобы выровнять их, мы решили установить минимальную высоту названий продуктов всех карточек продуктов подряд на самую высокую из трех в одной строке, используя чистый JavaScript. Ниже приведена полная логика для достижения этого.

Логика:

  • Найти ВСЕ селекторы ".card__info"
  • Установите количество карточек в строке для проверки на основе window.innerWidth
  • Установите максимальную высоту = 0;
  • Для каждого селектора card__info выполните следующее:
    • Получить карту__название
    • Получите высоту.
    • Установите максимальную высоту = максимальную (max_height, новая высота)
  • Для каждого селектора card__info выполните следующее:
    • Получить карту__название
    • Установите минимальную высоту на максимальное значение.

Идеально - делать это построчно окно.innerWidth 768px и выше — 3 столбца еще 2 столбца

Приведенный ниже код — это только первая часть решения. Вывод, который я получаю в консоли, это Max Height: NaN вместо фактической высоты, потому что на странице коллекции, указанной ниже, есть 15 продуктов с их названиями.

Код JavaScript:

//  Find All selectors of ".card__info"
let allCardInfo = document.querySelectorAll(".card__info");
//  Set number of cards per row, to check based on window.innerWidth
var numCardsPerRow = ((window.innerWidth >= 768) ? 3 : 2);
var maxHeight = 0; //  Set max height = 0;
//  Foreach card__info selector, execute the following:
allCardInfo.forEach(element => {
  let cardTitle = element.querySelector(".card__title");   // Get the card__title
  let cardTitleHeight = cardTitle.height;   // Get the height.
  // Set max height = max (max_height, new height)
  maxHeight = Math.max(maxHeight, cardTitleHeight);
  console.info('Max Height: ' + maxHeight);
});

должен быть document.querySelector

Blunt Jackson 05.05.2022 21:16

Большое спасибо, это помогло. пусть cardTitleHeight = cardTitle.height(); говорит, что высота не является функцией? здесь есть поправка?

PramodKumar 05.05.2022 21:20
let cardTitleHeight = cardTitle.height;
Inder 05.05.2022 21:23

Попробуйте let cardTitleHeight = cardTitle.clientHeight;

James 05.05.2022 22:25

@Джеймс, не могли бы вы сказать мне, какую функцию использовать для установки минимальной высоты того же элемента cardTitle?

PramodKumar 06.05.2022 10:35
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

.height не является свойством html-элементов в JS, поэтому вы можете использовать

getComputedStyle(element)[0].height вместо этого,

getComputedStyle — хороший метод объекта окна, который помогает вам получить ВСЕ стили элемента (независимо от того, являются ли они встроенными, внутренними или внешними)

Я также проверил, что @James сказал в комментариях о

let cardTitleHeight = cardTitle.clientHeight;

тоже работает...

Вы также можете использовать element.getClientRects, чтобы получить высоту вашего элемента

Махдия, не могли бы вы сказать мне, какую функцию использовать для установки минимальной высоты того же элемента cardTitle?

PramodKumar 06.05.2022 10:34

Тебе не нужна функция, element.style.minHeight = "100px"

Mahdiar Mransouri 07.05.2022 13:47

Другие вопросы по теме