Получение ширины css в виде числа вместо процента

В этой упрощенной версии моего кода я пытаюсь извлечь ширину css в виде числа без прикрепленного процента. Исследуя решение, я нашел это: Получить число для значения стиля БЕЗ «px;» суффикс, который решает проблему. Однако при попытке воспроизвести тот же результат я получаю

barSize:  NaN

вместо

barSize: 90;

Обновление: этот вопрос не спрашивает, как получить свойство, как в

document.querySelector('.defaultBar').style.width

который дает:

barSize: 90%

но как получить свойство без суффикса, как в

parseInt(document.querySelector('.defaultBar').style.width, 10);

что должно дать: барРазмер: 90

без суффикса %, но вместо него дает NaN.

<!DOCTYPE html>
<head>
  <meta charset = "utf-8">
  <style>
    .defaultBar {
      background-color: green;
      height: 4px;
      width: 90%;
    }
  </style>
</head>

<body>
  <div class = "defaultBar"></div>

  <script>
    const barSize = parseInt(document.querySelector('.defaultBar').style.width, 10);
    console.info("barSize: ", barSize);
  </script>
</body>

</html>

Ссылка, которую вы дали, предлагает, как получить свойство, а не свойство без суффикса

Simple 22.02.2019 16:41

вы получаете свойство, затем применяете parsetInt.. ваша проблема заключается в получении свойства

Temani Afif 22.02.2019 16:50

Вы говорите, что мне нужно сделать defaultBar = document.querySelector('.defaultBar'), тогда используйте функцию parseInt(), например parseInt(defaultBar, 10);

Simple 22.02.2019 16:53

вы неправильно получаете значение ширины, вы не читаете 90% ... дубликат покажет вам, как правильно прочитать это 90%. Если он у вас есть, то это легко (перейдите по ссылке в дубликате: developer.mozilla.org/en-US/docs/Web/API/Window/…, а также подумайте о том, чтобы прочитать весь ответ, чтобы лучше понять)

Temani Afif 22.02.2019 17:02

Разве вы не можете просто взять значение "90%" и удалить все нечисловые символы из строки, прежде чем передать его в parseInt()? Лично я неравнодушен к регулярным выражениям, но я уверен, что есть много способов удалить нецифры из строки. parseInt возвращает NaN, потому что не может обрабатывать дерево % или любой нечисловой символ как цифру.

SherylHohman 23.02.2019 00:26

У вас читать самый верхний ответ в связанный вопрос? Используйте getComputedStyle, он делает то, что вы хотите.

The Vee 23.02.2019 09:25

@TheVee «самый верхний ответ» зависит от ваших настроек, которые можно настроить для упорядочения ответов по «активным», «самым старым» или «голосам». По этой причине при ссылке на конкретный ответ лучше вместо этого поделиться ссылкой на этот ответ. Кроме того, со временем ответы могут всплывать вверх или вниз в различных списках.

SherylHohman 23.02.2019 20:46

Вы уверены, что document.querySelector('.defaultBar').style.width дает вам значение 90%? Получили ли вы console.info такой результат? Используемый мной ответ дает пустую строку. Другой ответ дает мне значение в 648.8px вместо 90%. Возможно, вам придется использовать некоторое деление, чтобы преобразовать число пикселей в %. В любом случае, вы можете использовать регулярное выражение для удаления нечисловых символов перед отправкой в ​​parseInt. Пример: const str = '90%'; const regex = /^(\d*)(.*)$/gm; const subst = '$1'; const result = str.replace(regex, subst); console.info('Substitution result: ', result); // 90

SherylHohman 23.02.2019 21:19

Вот онлайн-тестер регулярных выражений: regex101.com/r/YIrLGB/4 с примером кода, чтобы сохранить только цифры и десятичный знак, удаляя все остальные символы (например, px или %). Обратите внимание, что это улучшение моего предыдущего комментария, так как в этом сохранится десятичная точка, если она есть. Существует ссылка generate code, которая сгенерирует образец javascript (как в моем предыдущем комментарии), который затем вы можете изменить по мере необходимости, чтобы он соответствовал вашей кодовой базе. Обновлено из предыдущего комментария: regex = /^([\d\.]*)(.*)$/gm; // 90 или // 648,8 (от 90% или 648,8 пикселей соответственно)

SherylHohman 23.02.2019 21:43
document.querySelector('.defaultBar').style.width не дает того, что я думал, что дал. В итоге я использовал getComputedstyle для решения проблемы.
Simple 23.02.2019 22:42
Поведение ключевого слова "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
10
97
0

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