| |
|
|
| | Почему js думает что "100px"<"370px", а вот "39px">"370px"? | |
| |
|
|
| |
|
|
| |
для: shkryab
(22.03.2007 в 02:42)
| | | Это смотря где :-)
Если "39px" и "370px" будут находиться там, где они определяют линейные размеры чего-то и определяют "нормально", то тогда JS "подумает" вполне правильно.
В иных случаях, например:
а) когда ширина всей таблицы указана в "39px", а ширина одной ячейки, входящей в состав этой таблицы, должна равняться "370px", JS засомневается в "нормальности" программёра, сие написавшего и построит таблицу не по бредовым указаниям, а исходя из своей - вполне "нормальной" - логики;
б) когда пытаются отсортировать по возрастанию значения, которые по типу являются явными строками - "39px" и "370px" - JS выполнит это действие над строками и действительно поставит строку "39px" выше, чем строку "370px". И это тоже будет вполне "нормально".
PS. В своё время г-н Даль записал для всех нас великую народную мудрость: "Неча на зеркало пенять, коли рожа крива" | |
| |
|
|
| |
|
|
| |
для: CNT
(22.03.2007 в 03:52)
| | | Цэ координаты по у (...style.left) div-ов! Я пробовал и как строки сравнивать и как числа (из такого вида конвертировал), только всё тожесамое! | |
| |
|
|
| |
|
|
| |
для: shkryab
(22.03.2007 в 05:33)
| | | style.left - это то, что прописано в HTML-коде.
А жизненный опыт должен вам подсказать, что далеко не всегда за забором лежит именно то, что на этом самом заборе написано.
Во-первых, DIV'ы могли в процессе работы каких-то скриптов динамически "подвинуться" - в любом направлении.
Во-вторых, left - это всегда относительное значение положения объекта: пусть даже у него в стилях прописано position: absolute.
Для выяснения реального положения какого-либо object в JS надо каждый раз высчитывать абсолютные значения left и top, а именно:
var AbsLeft = AbsTop = 0;
while (object.offsetParent)
{
AbsLeft += object.offsetLeft;
AbsTop += object.offsetTop;
object = object.offsetParent;
}
|
Полученные AbsLeft и AbsTop как раз и будут отражать ПОЧТИ реальные координаты [i]object'a[/b].
ПОЧТИ я выделил потому, что существуют ещё несколько условий, которые надо иметь в виду, проводя вычисления... Но, полагаю, до этого дойдёте сами... Не "дойдёте" - спрашивайте. Только поконкретнее, а не просто... ругая JS :-) | |
| |
|
|
| |
 1.4 Кб |
|
| |
для: CNT
(22.03.2007 в 05:55)
| | | Что делает object.offsetParent;?
И ещё, посмотрите, пожалуйста, на то, что делаю (ещё, правда, до ума не доведено, но если всё сделаю как задумывал, должно получиться неплохо). И выскажете свои мнения по поводу того, как можно расставить zindex-ы! Чёт всё придумать не могу, что с ними делать! | |
| |
|
|
| |
|
|
| |
для: shkryab
(22.03.2007 в 05:33)
| | | координаты возвращаются в стринговом формате поэтому и сравниваются как строки (CNT пункт б)
прежде чем сравнивать их неообходимо перевести в тип Integer, для этого в JS есть parseInt(),
а потом уж их сравнивать.
var left = "39px" // строка
left = parseInt(left) // число left = 39
|
| |
| |
|
|
| |
|
|
| |
для: Crux
(22.03.2007 в 06:00)
| | | Ну перед тем как открывать тему я пытался думать и этот вариант тоже пробовал. Но всёравно спасибо за внимание! | |
| |
|
|
| |
|
|
| |
для: shkryab
(22.03.2007 в 16:14)
| | | > и этот вариант тоже пробовал
Пробуем ещё раз:
<script>alert(["39px">"370px",parseInt("39px")>parseInt("370px")])</script>
|
| |
| |
|
|
| |
|
|
| |
для: 12345
(22.03.2007 в 18:11)
| | | Так работает! А вот в скрипте, что сообщению выше прикриплён, не работало! Или это я ступил и файл не сохранил перед просмотром... | |
| |
|
|
| |
|
|
| |
для: shkryab
(22.03.2007 в 18:28)
| | | Там нет ни одной операции сравнения с подобным.
document.getElementById(menu[i][0][0]).style.left = y + z/10;
document.getElementById(menu[i][0][0]).style.top = 100 + Math.cos(menu[i][0][2]*Math.PI/180)*15;
- здесь надо всегда писать вида (100 + Math.cos(menu[i][0][2]*Math.PI/180)*15)+'px' , иначе в FF работать не будет. | |
| |
|
|
| |
|
|
| |
для: 12345
(22.03.2007 в 18:45)
| | | Спасибо! Сам бы не додумался ибо мой FF всё проглатил и не возник! | |
| |
|
|
| |
|
|
| |
для: shkryab
(22.03.2007 в 19:15)
| | | Не будет, если стоит доктайп (правильный любой). | |
| |
|
|
| |
|
|
| |
для: 12345
(22.03.2007 в 19:42)
| | | А насчёт того как праввильно zindex-ы расставить соображений нет? | |
| |
|
|