ОсновноеRadiotalkПользовательское
Программирование
6   •   Посмотреть все темы

FAQ: основы js.

 

6703
Андрей @ZloVeЩиЙ
Поможем друг-другу разобраться в JavaScript...

6703
Андрей @ZloVeЩиЙ
Начал разгребать JS, иногда что то элементраное просто неукого спросить, да и сформировать правильный запрос для того же гугла, не зная толком о чем речь, не совсем получаеться...
Думаю тема никому не помешает, найдуться те кто уже работал\работает с этим языком и поможет познать его нам - начинающим. (:

Ну и первый вопрос:
как сразу нескольким переменным - присвоить чысловое значение?
var name = 7; // правильный вариант.
var name = "%nick%" = 7; // нужный ,но не рабочий вариант.
Хотя var name = name2 = 7; - работает.

Отредактировано ZloVeЩиЙ - 23.10.2010
8497
Степан @Trilby
Эм... Что за извращение? С каких пор "%nick%" - это переменная?
Сколько языков видел - везде в ковычках - это строка.
%nick% ты видимо с мпчата взял... Так там это вообще серверная переменная, не зависящая от всяких там JS'ов...

6703
Андрей @ZloVeЩиЙ
Trilby пишет:

Эм... Что за извращение? С каких пор "%nick%" - это переменная?
Сколько языков видел - везде в ковычках - это строка.
%nick% ты видимо с мпчата взял... Так там это вообще серверная переменная, не зависящая от всяких там JS'ов...

Да вот извращаюсь как могу, пока есть на что смазать ((:
Нашел решения для себя, пока пропишу условием, а там по ходу создания и паралельного изучения, может вариант по более найду...
if ('%name%'!=""&&'%name%'!="-") {
var namee = 100500;
}
else {
var namee = 100;
}
document.write(namee);

Второй глупый вопрос:
JS не умееет считать?
var rating = 0.05+0.05+0.05;
var percent = rating*100;
все это равно 15.000000000000001
:o

Отредактировано ZloVeЩиЙ - 24.10.2010
4875
ValdeZ @ValdeZ
В первое не вникал особо, Болт в принципе правильно ответил. Штука типа %nick% в конечном счёте будет представлять из себя либо строку (значение) либо литерал (название, которое вставится на месте этой строки). Не помню точно.
Но это точно не название переменной:
См. ********** (1.5), литералы не могут начинаться с "%".

JavaScript умеет считать.
Подобный "казус" можно обнаружить и в ПХП и в Питоне и во многих других языках.
Дело в том, что некоторые десятичные дроби нельзя выразить в виде конечного числа. Особенно нечто типа: 0.7 и т.д.
Самый халявный способ, если не вникать в детали - делать вот так:
var rating = 0.05+0.05+0.05;
var percent = rating*100; // У меня вообще выдало: 15.000000000002
document.write(~~percent); // Выдаст нужный результат

Да-да, магическое сочетание символов "~~" преобразовывает всё что может в целые числа.

Отредактировано ValdeZ - 26.10.2010
6703
Андрей @ZloVeЩиЙ
ValdeZ пишет:

В первое не вникал особо, Болт в принципе правильно ответил. Штука типа %nick% в конечном счёте будет представлять из себя либо строку (значение) либо литерал (название, которое вставится на месте этой строки). Не помню точно.
Но это точно не название переменной:
См. ********** (1.5), литералы не могут начинаться с "%".

JavaScript умеет считать.
Подобный "казус" можно обнаружить и в ПХП и в Питоне и во многих других языках.
Дело в том, что некоторые десятичные дроби нельзя выразить в виде конечного числа. Особенно нечто типа: 0.7 и т.д.
Самый халявный способ - делать вот так:
var rating = 0.05+0.05+0.05;
var percent = rating*100; // У меня вообще выдало: 15.000000000002
document.write(~~percent); // Выдаст нужный результат

Да-да, магическое сочетание символов "~~" преобразовывает всё что может в целые числа.
Так же как "!!" преобразовывает всё что может в булев тип.

Не прошло и два дня(:
Спасибо конечно но уже нашел, пришел к выводу что легче будет целые чысла использовать.

4875
ValdeZ @ValdeZ
Извини, только сейчас прочитал

Если не хочешь каждый раз с такой фигнёй страдать - учитывай порядок вычислений.
Можно сначала умножить на сто а потом на три - получится ровно 1500, без дробной части.
Именно так, потому-что в твоём варианте:
- ты сначала получаешь число равное 15/100
- интерпретатор сокращает числитель и знаменатель на пять и получает дробь 3/20, которая делится с остачей 2
- множишь на сто: получаешь 1500 и эту остачу после кучи знаков после точки.
Подобная логика.
Поэтому внимательно следи, если заранее известны числа.
Если нет - способ выше, с магическим сочетанием символов

Не проще использовать целые числа - проще иметь один выход для таких ситуаций.
Избегание проблемы - не способ её решения.

Отредактировано ValdeZ - 26.10.2010
8497
Степан @Trilby
<off>Чисто мое имхо: в любом языке программирования обычные вычисления - это САМОЕ простое, что может быть...

4875
ValdeZ @ValdeZ
Да тут ничего сложного то и нет.
Опять же, так само ведёт себя и ПХП и Питон, и Руби, насколько я смотрел их документацию...
Здесь ничего выдуманного - всё верно.

6703
Андрей @ZloVeЩиЙ
Есть некий обьект при щелчке у которого меняеться title="" каким образом можно поменять значение при обратном щелчке?
onclick='this.title="111";'
еще раз клик и title="222"
...

8497
Степан @Trilby
Дык, создаёшь список: ********** с нужными тайтлами, к объекту добавь переменную с цифрами ( nums=0; )
При клике цепляешь тайтл из Array с номером, указанным в nums.. Ну, и, соответственно значение nums увеличиваешь на 1 )


Индусы он-лайн, короче

6703
Андрей @ZloVeЩиЙ
Trilby пишет:

Дык, создаёшь список: ********** с нужными тайтлами, к объекту добавь переменную с цифрами ( nums=0; )
При клике цепляешь тайтл из Array с номером, указанным в nums.. Ну, и, соответственно значение nums увеличиваешь на 1 )
Индусы он-лайн, короче

Как вариант но слишком "тяжелый" как в плане веса так и исполнения.
Пошарился тут по готовых решениях от ридза, нашел кое-чего интересного для себя)
onclick='this.title=parent.zzz?"подсказка #2":"подсказка #1";"' title='подсказка #1'

Начальное значение title
Изменяемое значение title
все это работает при условии что
zzz - определенная переменная.
-Для чего можно использовать?
-Например для смены изображений\подсказок - вкл.\выкл. пр.

Отредактировано ZloVeЩиЙ - 22.11.2010
8497
Степан @Trilby
Так тебе только два варианта надо? Или тут нету лимита?

6703
Андрей @ZloVeЩиЙ
насчет лимита не знаю, не тестировал...
мне достаточно 2-х подсказок, "кнопка включена" - когда она включена ну и "кнопка выключена" соответственно(:

458
ridz @ridz
ZloVeЩиЙ, )))
onclick='this.title=this.title=="подсказка #1"?"подсказка #2":"подсказка #1"'

6703
Андрей @ZloVeЩиЙ
Есть три блока внутри одного блока:
<div class='box'>
<div class='uno'>1</div>
<div class='due'>2</div>
<div class='tre' onMouseOver=this.className='tre_h' onMouseOut=this.className='tre'>3</div>
</div>

как видно при наведении курсора на последний блок его класс меняется с tre на tre_h...
как правильно прописать, что бы при наведении на любой из 3-х блоков которые лежат в box`e класс для третьего блока так же менялся?

Отредактировано ZloVeЩиЙ - 30.11.2010
8497
Степан @Trilby
Дык чо, не судьба к самому "Box" прикрутить функцию?
Все три блока же находятся в самом боксе
[box [une] [deux] [trois] /box]


p.s. Чтобы с this не морочиться в такой ситуации - можно через document.getElementsById обращаться к блоку. Лично мне так удобно, ты сам выбирай

Отредактировано Trilby - 30.11.2010
6703
Андрей @ZloVeЩиЙ
Trilby пишет:

Дык чо, не судьба к самому "Box" прикрутить функцию?
Все три блока же находятся в самом боксе
[box [une] [deux] [trois] /box]


p.s. Чтобы с this не морочиться в такой ситуации - можно через document.getElementsById обращаться к блоку. Лично мне так удобно, ты сам выбирай

Точно, как то сам не догадался ):

6703
Андрей @ZloVeЩиЙ
Как поменять class в зависимости от url?
Тоесть если domen.com/?to=register то class='one'
if domen.com/?to=call то class='two'
else class='three'

p.s. ?to=name - имя документа.html который инклудим.

Отредактировано ZloVeЩиЙ - 05.02.2011
8497
Степан @Trilby
ZloVeЩиЙ пишет:

Как поменять class в зависимости от url?
Тоесть если domen.com/?to=register то class='one'
if domen.com/?to=call то class='two'
else class='three'

p.s. ?to=name - имя документа.html который инклудим.

Получилось только через метки+jquery сделать сие чудо-юдо..
**********
**********
**********
**********
ниже архив с этим всем. Вот только, работает оно только на сервере... Ajax как-никак)


Если не лениться и покапаться далее, то можно сделать именно имя файла после решетки... Я просто не стал уже это писать, т.к. там обработчики исключений и прочая байда, а мне уже очень хочется спать... )
по сабжу ещё это советую заценить: **********
**********

Отредактировано Trilby - 05.02.2011