Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.06.2017, 12:20
Новичок на форуме
Отправить личное сообщение для Ольга Алешина Посмотреть профиль Найти все сообщения от Ольга Алешина
 
Регистрация: 29.06.2017
Сообщений: 2

помогите разобраться с height в css
Всем здравствуйте!
Есть такая проблема:
в цикле выполняются следующие действия:

for (int i=0; i < data.length; i++) {
var str = "<tr id = \"" + i + "\" style=\"height:23px;\">";
str = str + "<td>" + data.text[i] + "</td></tr>";
$('#bodyTable').append(str);
}

Текст разный и в ячейках может размещаться и в одну, и в две строки, и больше.

После завершения цикла мне нужно использовать высоту строки. Беру, к примеру, высоту первой строки. Она у меня почему-то 28px вместо заданных в style 23px. Однако два подряд вызова alert'ов с проверкой высоты дают разные результаты. Т.е. текст в JS:

alert($('#0').css('height'));
alert($('#0').css('height'));

показывает 28px и 23px.

Если я задаю в style значение больше или равное 28, к примеру 30, то:

alert($('#0').css('height'));
alert($('#0').css('height'));

показывают оба 30px.

Такое ощущение, что где-то какая-то задержка, асинхронность что ли идет. Сначала высота равна взятой откуда-то высоте 28 (м.б. по размеру текста в ячейки), однако затем она все-таки становится равной 23, причем текст в ней спокойно помещается.
В чем причина и как решить проблему?

P.S. Этот javascript рисует некую картинку в браузере. Переход на страницу, на которой рисуется эта картинка и отрабатывает указанный скрипт, осуществляется с другой jsp по нажатию на кнопку. Так вот в этом случае скрипт отрабатывает правильно и оба алерта дают значение 23px. Если же я нахожусь на странице и нажимаю ctrl-F5, то вот в этом случае первый алерт показывает 28px, а второй 23px.

Последний раз редактировалось Ольга Алешина, 29.06.2017 в 12:33.
Ответить с цитированием
  #2 (permalink)  
Старый 29.06.2017, 13:07
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
$(function() {
    var d = ['aaa', 'bbb'];
    for (var i=0; i < d.length; i++) {
        var str = '<tr style="height:23px"><td>' + d[i] + '</td></tr>';
        $('#tbl').append(str);
    }
    alert($.map($('tr'), function(e, i) {
        return i + ' = ' + $(e).height()
    }))
});
</script>
</head>
<body>
<table id="tbl"></table>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 29.06.2017, 14:29
Новичок на форуме
Отправить личное сообщение для Ольга Алешина Посмотреть профиль Найти все сообщения от Ольга Алешина
 
Регистрация: 29.06.2017
Сообщений: 2

Проблема решилась обновлением браузера (Firefox) с версии 44.0 на 54.0.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться с функцией .height() kos0760 Элементы интерфейса 2 24.05.2017 23:51
Помогите разобраться с регуляркой shtormIK Общие вопросы Javascript 6 26.06.2012 20:02
Помогите разобраться с $(this) didfree Общие вопросы Javascript 3 03.05.2012 23:07
Помогите разобраться с задачей (поиск строки) Absinthe Ваши сайты и скрипты 6 07.12.2009 09:17
Помогите разобраться со сплиттером Tror Общие вопросы Javascript 1 16.01.2009 18:44