Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.04.2014, 07:24
Интересующийся
Отправить личное сообщение для pshcolnyy Посмотреть профиль Найти все сообщения от pshcolnyy
 
Регистрация: 19.04.2014
Сообщений: 25

Проблемы с пониманием js
Всем привет. Недавно я начал изучать js по книге Изучаем JavaScript headfirst, но столкнулся с несколькими проблемами, точнее не проблемами, просто непонятно как все это работает. Можете пожалуйста объяснить некоторые вещи.


1) Вот код из книги:

Код:
<html>
	<head>
		<title>iRock - Виртуальный любимец Rock</title>

		
<script type="text/javascript">
			function touchRock() {
	var userName = prompt("Как вас зовут?", "Введите ваше имя.");
  		if (userName) {
		alert("Рад вас видеть, " + userName + ".");
		document.getElementById("rockImg").src = "rock_happy.png";
					} 
				}
			setTimeout("document.getElementById('rockImg').src='rock.png';", 300000)
		</script>
</head> <body onload="alert('Hello, I am your pet rock.');"> <div style="margin-top:100px; text-align:center;"> <img id="rockImg" src="rock.png" alt="iRock" style="cursor:pointer" onclick="touchRock()" /> </div> </body> </html>
на картинке rock_happy изображен улыбающийся камень, а на картинке rock изображен одинокий камень.

Я хотел бы у вас спросить как работает код setTimeout , точнее не как, а когда, я вроде никак не активирую эту часть кода, т.к. он не входит в функцию.

2)Вот в другом коде js я видел , что в функции вставляются какие-то параметры и я вообще не понимаю, что это за параметры, для чего они, просто я видел, что в параметры функции вставляют совсем нелогичные для меня слова, которые потом не встречаются в html коде, а только используются посреди функции и тут моя логическая цепочка взрывается.

3)Что делает метод return, я поискал в интернете и меня совсем не устраивает слова, что return возвращает значение. Какое значение, куда возвращает, что вообще он делает?


Заранее спасибо за помощь.
Ответить с цитированием
  #2 (permalink)  
Старый 19.04.2014, 07:59
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от pshcolnyy Посмотреть сообщение
Я хотел бы у вас спросить как работает код setTimeout , точнее не как, а когда, я вроде никак не активирую эту часть кода, т.к. он не входит в функцию.
Код выполняется по мере загрузки страницы. Как только браузер загрузит очередной блок script то код из него выполняется, после выполнения идет загрузка остальной части страницы. Поэтому в этом коде тайймер запустит в момент загрузки страницы.


Сообщение от pshcolnyy Посмотреть сообщение
Вот в другом коде js я видел , что в функции вставляются какие-то параметры и я вообще не понимаю, что это за параметры, для чего они, просто я видел, что в параметры функции вставляют совсем нелогичные для меня слова, которые потом не встречаются в html коде, а только используются посреди функции и тут моя логическая цепочка взрывается.
А там что ли в твоем учебнике до этого не было описано как функции работают? Ну, вот тут почитай: http://learn.javascript.ru/function-basics

Сообщение от pshcolnyy Посмотреть сообщение
Что делает метод return, я поискал в интернете и меня совсем не устраивает слова, что return возвращает значение. Какое значение, куда возвращает, что вообще он делает?
Завершает функцию и возвращает значение после return в то место кода, где функция была вызвана... Там по той ссылке, что я привел выше об этом вроде написано.

А вообще странно что ты задаешь такие вопросы. В хорошем учебнике материал должен излагаться последовательно и таких вопросов по идее возникать не должно. То ли ты пытаешься бежать впереди паровоза, то ли учебник фиговый. Например на этом сайте есть свой учебник по JS:
http://learn.javascript.ru
Может попробуешь его?

Последний раз редактировалось jsnb, 19.04.2014 в 08:08.
Ответить с цитированием
  #3 (permalink)  
Старый 19.04.2014, 10:25
Интересующийся
Отправить личное сообщение для pshcolnyy Посмотреть профиль Найти все сообщения от pshcolnyy
 
Регистрация: 19.04.2014
Сообщений: 25

1) АААА я кажется начал понимать . Этот код извлекает данные из rockImg и после таймера меняет на rock, но все равно не понимаю как я активирую этот каждый когда я нажимаю на картинку. Я понимаю если бы он активировался один раз после загрузки страницы, но каждый когда я нажимаю на картинку таймер перезапускается.

2)
Код:
function showMessage(from, text) { // параметры from, text
   
  from = "** " + from + " **"; // здесь может быть сложный код оформления
  alert(from + '\n\n' + text);
}
showMessage('Маша', 'Привет!');
showMessage('Маша', 'Как дела?');
Вот тут если я правильно понимаю эту функцию то она обрабатывает(добавляет звёздочки и выводит в новое окно) то что потом будет написано в скобках функции showMessage.
Если следовать моей логите то эта функция будет срабатывать только тогда когда ее объявят в html коде с параметрами которые должна обработать функция.

3. Так кажется насчет return я всё понял.

4. Пока я смотрел вот этот код то я не понял как активируется функция parsedonuts точнее я не понимаю как она знает где нужно ей активироваться, если как вы говорите код выполняется по мере загрузке как эта часть кода знает где выполняться.
Я смотрел и не видел как вызывают эту функцию, а другие видел.

(код в файле).
Вложения:
Тип файла: txt index.txt (3.2 Кб, 4 просмотров)
Ответить с цитированием
  #4 (permalink)  
Старый 19.04.2014, 11:12
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от pshcolnyy Посмотреть сообщение
1) АААА я кажется начал понимать . Этот код извлекает данные из rockImg и после таймера меняет на rock, но все равно не понимаю как я активирую этот каждый когда я нажимаю на картинку. Я понимаю если бы он активировался один раз после загрузки страницы, но каждый когда я нажимаю на картинку таймер перезапускается.
В приведенном коде таймер не перезапускается при нажатии на картинку, он запускается 1 раз и сработает через 300 секунд после загрузки страницы. При клике по картинке запускается функция touchRock которая спрашивает имя и выводит алерт, а потом заменяет атрибут src и изображения. Функция запускается потому что прописана в onclick атрибут тега img.

Сообщение от pshcolnyy Посмотреть сообщение
Если следовать моей логите то эта функция будет срабатывать только тогда когда ее объявят в html коде с параметрами которые должна обработать функция.
Не когда объявлена, а когда вызывается. Вызывается функция круглыми скобками, в которых указываются значения аргументов. Ну или через apply или call. Ну или косвенно как-нибудь, через таймер или событие.

Сообщение от pshcolnyy Посмотреть сообщение
Пока я смотрел вот этот код то я не понял как активируется функция parsedonuts точнее я не понимаю как она знает где нужно ей активироваться, если как вы говорите код выполняется по мере загрузке как эта часть кода знает где выполняться.
Функция parseDonuts вызывается в функции updateOrder при присвоении значений переменным numCakeDonuts и numGlazedDonuts.
А функция updateOrder вызывается при генерации события change инпутов, которое происходит при потере фокуса у инпутов при условии что данные в нем изменились.
В общем, тебе надо основы учить. А толку от копания в таком коде не много будет. Если в твоей книге сразу без подготовки такой код выдают, то это плохая книга. Ну, или не расчитаная на новичков. А ты, судя по вопросам, программированием особо не занимался до этого.
Ответить с цитированием
  #5 (permalink)  
Старый 19.04.2014, 11:13
hhh hhh вне форума
Профессор
Отправить личное сообщение для hhh Посмотреть профиль Найти все сообщения от hhh
 
Регистрация: 19.11.2013
Сообщений: 150

Я, кстати, раза 4 пытался прочесть до конца эту книгу. Вроде дальше 100 страниц не получалось, забивал. Также пытался тут осваивать js.
Начал в итоге практиковать jquery.
Мое личное мнение, js было бы интересно изучать в 2007. А сейчас в голове не улаживаются мысли, что нужно знать и jquery и php и просто времени не хватит на это все. Поэтому сразу перешел к jquery.

Это так оффтопик нуба, не хочу чтобы повлиял на тебя пост. Удачи в практике
Ответить с цитированием
  #6 (permalink)  
Старый 19.04.2014, 11:26
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от hhh Посмотреть сообщение
Поэтому сразу перешел к jquery.
jQuery это не язык. Знать jQuery и не знать JS, это всё равно что решать квадратные уравнения, при этом не зная что такое умножение и деление. Ну а чо, на калькуляторе крестик или слеш тыкнул, числа набрал и оно вывело нужный результат, удобно. Только дальше решения школьных задачек при таком подходе будет проблематично продвинуться, да и при перестановке слагаемых тоже начнутся проблемы.

P.S. Могу разочаровать, помимо JQ и PHP придется еще кучу всего учить. И причем делать это постоянно. Специфика отрасли.
Ответить с цитированием
  #7 (permalink)  
Старый 19.04.2014, 11:40
hhh hhh вне форума
Профессор
Отправить личное сообщение для hhh Посмотреть профиль Найти все сообщения от hhh
 
Регистрация: 19.11.2013
Сообщений: 150

Ну я работаю только с одной cms и сам умею думать, что мне надо изучать.
Ответить с цитированием
  #8 (permalink)  
Старый 19.04.2014, 23:14
Интересующийся
Отправить личное сообщение для pshcolnyy Посмотреть профиль Найти все сообщения от pshcolnyy
 
Регистрация: 19.04.2014
Сообщений: 25

я понял насчет вопроса 3 и 2 , но в упор не понимаю 1. Вы говорите, функция прописана в теге img. Да, она там прописана, но функция заканчивается до setTimeout. Если я правильно всё понимаю функция же заканчивается вот такими скобками } ?
Ответить с цитированием
  #9 (permalink)  
Старый 20.04.2014, 03:27
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от pshcolnyy Посмотреть сообщение
я понял насчет вопроса 3 и 2 , но в упор не понимаю 1. Вы говорите, функция прописана в теге img. Да, она там прописана, но функция заканчивается до setTimeout. Если я правильно всё понимаю функция же заканчивается вот такими скобками } ?
Ну да, setTimeout не входит в функцию, поэтому таймер запустится при загрузке сраницы, а при клике будет вызываться функция. Соответственно таймер перезапускаться не будет.
Ответить с цитированием
  #10 (permalink)  
Старый 20.04.2014, 06:55
Интересующийся
Отправить личное сообщение для pshcolnyy Посмотреть профиль Найти все сообщения от pshcolnyy
 
Регистрация: 19.04.2014
Сообщений: 25

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с кодировкой JS Jamesdgreeze Общие вопросы Javascript 1 07.07.2013 15:10
Есть ли у JS проблемы с буквами Šš zebra741258963 Общие вопросы Javascript 8 21.02.2012 05:11
Проблемы с submit с помощью JS edycle Events/DOM/Window 0 17.10.2011 19:55
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37
Проблемы с подгрузкой новых JS скриптов на странцу OnArs Общие вопросы Javascript 2 05.10.2008 21:49