Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вопрос по обучающим примерам. (https://javascript.ru/forum/misc/25075-vopros-po-obuchayushhim-primeram.html)

Славик 24.01.2012 16:09

Вопрос по обучающим примерам.
 
Если не в тот раздел, извините. :)
Начал изучение JavaScript. Параллельно читаю учебник на этом сайте и смотрю видео курс "Специалист". Делал задания по видео про функции. Задание было сделать функцию вычисления средне арифметического числа.

Вот как сделал "Специалист":

<script>
    function middle (a1,a2) 
       {
         var f = (a1 + a2)/2;
         return f; 
       }
     var s1 = prompt ('Введите первое число','');
     s1 = parseInt(s1);
     var s2 = prompt ('Введите второе число','');
     s2 = parseInt(s2); 
     
     var j = middle(s1,s2);
     
     document.write (j)
</script>

А вот как сделал я:
<script>
      var c = +prompt ("Введите первое число","");
      var v = +prompt ("Введите второе число","");
        function z(c,v) 
	    {
	      return "Среднее арифметическое " + (c + v) / 2;  
	    }
        document.write (z(c,v));
</script>

Вопрос: :-?
ЗАЧЕМ в примере "Специалиста" так много переменных??? и
ПОЧЕМУ работает мое решение???? (делал абсолютно по наитию(как кажется правильным))

Kolyaj 24.01.2012 16:50

Цитата:

Сообщение от Славик
ЗАЧЕМ в примере "Специалиста" так много переменных???

Ну написали так, кто их знает, почему так.

Цитата:

Сообщение от Славик
ПОЧЕМУ работает мое решение????

А почему не должно?

Kolyaj 24.01.2012 19:15

alert((+prompt('Введите первое число') + +prompt('Введите второе число')) / 2);

melky 25.01.2012 00:49

Цитата:

Сообщение от Kolyaj (Сообщение 152574)
alert((+prompt('Введите первое число') + +prompt('Введите второе число')) / 2);

alert((+(a=prompt)('Введите первое число') + +a('Введите второе число')) / 2);

Славик 25.01.2012 02:28

На все ваши ответы у меня есть свой одни:
В рот мне чих-пых! Как вы это делаете!??!? Но задача была научится работать с функциями, хотя и ваши примеры я взял на заметку. :)
В моем решении меня интересует КАК он заработал, и ПОЧЕМУ, по какому алгоритму???? кто то может объяснить?

qwertyuiop10 25.01.2012 08:50

Славик,
Посто ты написал рабочий код. Тябя это удивляет? :) ты записал в переменные prompt, потом сделал функцию, возвращающюю их среднее арефметическое, потом вывел результат функции на страницу. Всё правильно, не удивляйся ))

Seva1986 25.01.2012 23:50

Цитата:

Сообщение от Славик
В моем решении меня интересует КАК он заработал, и ПОЧЕМУ, по какому алгоритму???? кто то может объяснить?

Ну так всё просто, по тому что интерпретатор яваскрипта разобрался с вашим кодом и смог его выполнить:)
А если серьёзнее то вам скорее всего не понятно почему уних используеться parseInt а у вас вместо него сразу c = +prompt ну так унарныйй плюс тоже преобразует в числовой тип. поэтому и работает правильно...

Славик 30.01.2012 14:02

с Предыдущим разобрался... у меня другой вопрос. Вот код
var z = new Array();
	 do
	  {
	     var x = +prompt('Введите число или 0 для отмены','');
		 if (x) z.push(x);
	  }
	 while ( x );
	 document.write ('Вы ввели числа : ' + z + '<br/>');
	 
	 var s = 0;
	 for ( i = 0; i < z.lenght; i++)
	 //document.write (z[i]);
	   {s += z[i];} 
	  if (z.length > 0) 
	 { var d = s/z.length;}
	 document.write ('Среднее число : ' + d);


Он должен вычислять среднее арифметическое из введенного массива. НО почему то не выводит, а выводит среднее 0, если убрать закомментированную строчку с документ.врайтом и сделать ее активной, то
1 оно не выводит документ.врайт на страницу
2 все начинает работать нормально...
:-? Почему так??? делалось все по аналогии и я не смог найти разницу между работающим кодом и моим...

melky 30.01.2012 14:39

выводите через alert.

nerv_ 30.01.2012 14:54

Славик, 11 строка z.lenght Это на первый взгляд.

Славик 30.01.2012 15:24

Ну а если я хочу через документ врайт???? точнее мне нужно через документ врайт???
В коде какая то ошибка... но где не могу понять...

Славик 30.01.2012 15:28

nerv_ Спасибо! действительно там! :)

melky 30.01.2012 15:39

всегда путаю length с lenght и height с heigth

Славик 26.02.2012 14:44

Народ!!! Помогите еще! :)
1
Читаю раздел "Введение в браузерные события" и наткнулся на проблему. У меня файл: Index.html имеет подключенный файл Style.css. Проблема вот в чем:
Я хочу чтобы по клику на кнопке происходила замена одного класса CSS на другой... Вот код которым я пытался это сделать:
var click = document.getElementById('button')   //получение кнопки
		 var xxx = document.getElementById('xxx').className;  // получение имени класса CSS 
		 
		 click.onclick = function () {
			 return xxx = "proba22"} // при клике на button заменить класс 'proba1' на 'proba22'

А оно получается имя меняет, а стиль остается таким же... как поступить в такой ситуации? пробовал и без 'return'.


2
Второй же вопрос с той же главы:
По примеру задачи про открывающейся/сворачивающийся меню
вот мой код этого примера:
var zxz = document.getElementById('jjj'); //получение кнопки
		 var zxc = document.getElementById('hih'); // получение изменяемого обьекта

		 zxz.onclick = function () { // изменение отбражения блока
		 if (zxc.style.display == 'none') {zxc.style.display = 'block'}
		 else zxc.style.display = ''} // (*) проблема тут

проблема заключается вот в чем при первом клике оно раскрывает блок, а при втором если оставить в строке (*) пустые одинарные скобки то оно обратно его не свернет, а если поставить в них 'none' то все работает нормально. Почему так??? ведь в главе 'Стили и классы, getComputedStyle' говорится что для возврата к первоначальным настройкам достаточно вставить пустые скобки????????

рони 26.02.2012 15:19

Славик,
var click = document.getElementById('button')   //получение кнопки
		 var xxx = document.getElementById('xxx');  // получение элемента
		 
		 click.onclick = function () {
			  xxx.className = "proba22"} // при клике на button заменить класс 'proba1' на 'proba22'


2.
Цитата:

Сообщение от Славик
главе 'Стили и классы, getComputedStyle' говорится что для возврата к первоначальным настройкам достаточно вставить пустые скобки????????

первоначальные настройки это настройки по умолчанию для свойства display значение none не является значением по умолчанию

Славик 26.02.2012 15:28

По второму понятно спасибо что объяснил. А первое все равное не работает даже так как ты написал.... А сорри! ошибся :) работает! :)) спасибо! :)


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