Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Не срабатывает условие (https://javascript.ru/forum/events/16484-ne-srabatyvaet-uslovie.html)

AkeLLbl4 10.04.2011 13:17

Не срабатывает условие
 
var sidebar = document.getElementById("sidebar");
var content = document.getElementById("content");
var sh = sidebar.offsetHeight;
var ch = content.offsetHeight;
if (sh>ch) { $('#content').height(sh); }

Подскажите пожалуйста, почему не срабатывает условие?
Без условия нормально подставляется.

Sweet 10.04.2011 13:30

Цитата:

Сообщение от AkeLLbl4
не срабатывает условие

Такого не бывает. Условия "срабатывают" всегда. Посмотри, чему равны sh и ch.

AkeLLbl4 11.04.2011 16:06

Я думал может быть сам где то ошибся, но видимо нет.
Когда меняю ch>sh и задаю height для #sidebar все работает. Но нужно делать именно так

melky 11.04.2011 16:36

Цитата:

Сообщение от AkeLLbl4 (Сообщение 100212)
Я думал может быть сам где то ошибся, но видимо нет.
Когда меняю ch>sh и задаю height для #sidebar все работает. Но нужно делать именно так

добавь в код

alert( sh > ch ? "Да":"Ошибка" )


и узри!

AkeLLbl4 12.04.2011 16:12

Узрел "ДА", но высота блока не равняется =(
Для ясности может кто-нибудь поможет http://vg-travels.ru/russia/6
Блок #content должен вытянуться во всю высоту.

melky 13.04.2011 10:25

если в буле true, то высота виновата! она 118 равна ( ch ), а sh ~ 500

$(function(){

$('#content').height(document.getElementById("sidebar").offsetHeight)  })

при ПОЛНОЙ загрузке страницы это надо делать

AkeLLbl4 19.04.2011 12:29

$(document).ready(function(){

	$('ul.menu').removeClass();
	$('#nav>ul').find('ul').parent().each(function(i){
		$(this).hover(function(e){
			var $targetul=$(this).children('ul')
			if ($targetul.queue().length<=1)
				$targetul.slideDown(300)
			},
			function(e){
				$(this).children('ul').slideUp(200)
			}
		);
	});
	
	$('#print a.print').click(function() {
		$(this).parent().find('.tooltip').fadeIn(300);
		return false;
	});
	$('#print .tooltip a.button').click(function() {
		$(this).parent().fadeOut(300);
	});
	
	$('.term-info').find('.item').css('display', 'none');
	$('.term-info').find('a').click(function() {
		$('#item-0').slideToggle(2000);
		return false;
	});
	
	var sh = document.getElementById("sidebar").offsetHeight;
	var ch = document.getElementById("content").offsetHeight;
	if(sh>ch) { $('#content').height(sh); }
});

Вот полный скрипт, тут еще всякая фигня делается.
Думал виновата высота ch или sh, поэтому пробовал округлять до целого, тоже не помогло.
Попробовал проверить заполняются ли переменные с помощью
alert(sh);
alert(ch);

Передаются адекватные целые значения.

Маэстро 19.04.2011 21:33

Сравните:
<div style="background-color:#FF0000;" height="300px">12345</div>
<br>и<br>
<div style="background-color:#FF0000; height:300px">12345</div>

Попробуйте попроще написать свой код и менять высоту не атрибута объекта, а высоту в его стиле:
document.getElementById("content").style.height=300;

ksa 19.04.2011 22:04

Маэстро, нужно указывать единицы измерения... Например

document.getElementById("content").style.height='300px';

Маэстро 20.04.2011 20:16

Цитата:

Сообщение от ksa (Сообщение 101470)
Маэстро, нужно указывать единицы измерения... Например
document.getElementById("content").style.height='300px';

а я не указываю. и кавычки не ставлю. мне влом. проверил на многих броузерах - работает без проблем. и по-умолчанию воспринимается как число в пикселях.
покажете где это не сработает? ;)


Часовой пояс GMT +3, время: 21:55.