#javascript #jquery #css
#javascript #jquery #css
Вопрос:
Я пытаюсь изменить ширину элемента при изменении размера окна. Я пытаюсь получить ширину элемента, но он возвращается NaN
. Это мой код для получения ширины и ее регистрации:
var widthItemMedia = parseInt($(".my-class .list-block .item-media i").css('width'));
console.log("Previous: " lastWindowWidth " Current: " windowWidth " Width " widthItemMedia);
Комментарии:
1. NaN может быть результатом только тогда, когда результат не определен, логический или нулевой. Проверьте, действителен ли селектор
2. Не могли бы вы также поделиться своим
css
иhtml
кодом? Всегда было бы неплохо создать здесь скрипку.3. @K3v1n это неверно. Если значение ширины равно «auto», результат (от вызова
parseInt()
) будетNaN
.4.
console.log($(".my-class .list-block .item-media i").css('width'))
возвращает что?5. Как это вернет NAN?
Ответ №1:
Разница между
.css(width)
и.width()
заключается в том, что последний возвращает значение пикселя без единицы измерения (например, 400), в то время как первый возвращает значение с неизмененными единицами измерения (например, 400 пикселей). Этот.width()
метод рекомендуется, когда ширину элемента необходимо использовать в математических вычислениях.
Используйте .width()
, когда вы хотите, чтобы число работало с:
var widthItemMedia = $(".my-class .list-block .item-media i").width();
Вам не нужно parseInt()
ни то, ни другое. parseInt()
Функция допускает нечисловые данные в конце входной строки, поэтому «20 пикселей» подойдет. Однако что-то вроде «auto» не подходит. .width()
Метод дает вам фактическую ширину макета. См. Также Методы .innerWidth()
and .outerWidth()
, которые иногда могут дать вам нужный ответ в зависимости от ситуации.
Комментарии:
1. Консоль теперь возвращает это
Previous: 678 Current: 1173 ElemWidth undefined
2. @ВасяПупкин в вопросе недостаточно кода, чтобы понять, в чем проблема;
console.log()
опубликованный вами текст вообще не включает «ElemWidth».