Автор Тема: Нещо не ми овира в главата защо така неработи ?  (Прочетена 4088 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

svet1bg

  • Full Member
  • ***
  • Благодарности
  • -Казани: 1
  • -Получени: 1
  • Публикации: 124
Опитах се да гледам уроци от сорта на JS и jQuery колкот и да не разбирам много, интересни са ми :) .

Проблема обаче с който се сблъсках е много противоречив на това което гледах и незнам защо става така и бих искал някой да ми обясни зада мога да продължа нататък.

Код: Javascript
  1. <script type="text/javascript">
  2.  $(document).ready(function(){
  3.  // според изгледаните уроци това означава, че скрипта написан между 2 и 4 ред ще се изпъли след пълното заерждане на станицата !
  4.  });
  5.  </script>
  6.  

също така :

Код: Javascript
  1.  <script type="text/javascript">
  2.  $(function(){
  3.  // според изгледаните уроци това означава същото като горното но в по съкратен вариянт !
  4.  });
  5.  </script>
  6.  

Тогава защо :

Код: Javascript
  1.  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3.      <head>
  4.           <script type="text/javascript" src="jquery-1.4.4.js"></script>
  5.           <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6.           <script type="text/javascript">
  7.                $(document).ready(function(){
  8.                     function test(){
  9.                          var a=1
  10.                          if(a!=0){
  11.                               alert("stava");
  12.                               function stava(){
  13.                                    alert("stava");
  14.                               }
  15.                          }
  16.                     }
  17.                });
  18.           </script>
  19.           <title>SetTimeOut</title>
  20.      </head>
  21.      <body>
  22.           <input type="submit" value="natisnime" name="sub" onclick="test()"/>
  23.      </body>
  24. </html>
  25.  

Написан така кода НЕ РАБОТИ, а трябва да се напише така :

Код: Javascript
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3.      <head>
  4.           <script type="text/javascript" src="jquery-1.4.4.js"></script>
  5.           <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6.           <script type="text/javascript">
  7.                $(document).ready(function(){
  8.  
  9.                });
  10.  
  11.                function test(){
  12.                     var a=1
  13.                     if(a!=0){
  14.                          alert("stava");
  15.                          function stava(){
  16.                               alert("stava");
  17.                          }
  18.                     }
  19.                }
  20.           </script>
  21.           <title>SetTimeOut</title>
  22.      </head>
  23.      <body>
  24.           <input type="submit" value="natisnime" name="sub" onclick="test()"/>
  25.      </body>
  26. </html>
  27.  

Вйждам каква е разликата но немога да я осъзная защото във уроците се говори за едно а тука става друго, а сигурно и аз греша някъде, моля помогнете.

Благодаря за вниманието и отделеното от вас време!  8)

NoBBy

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 4
  • -Получени: 38
  • Публикации: 309
Re: Нещо не ми овира в главата защо така неработи ?
« Отговор #1 -: 16 Декември 2010, 15:26:26 »
Като пишеш onlick="test()" всъщност търсиш функция с глобална видимост.
Във втория случай си декларирал такава, но във първия функцията ти test() се намира в друга анонимна функция и няма как да я извикаш освен ако не се намираш в същата област на видимост.

Най-добрия начин е да зарежеш изобщо onclik="asdsad", а да ползваш възможностите на jQuery за обработка на събития и да направиш нещо такова:


Код: Javascript
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3.     <head>
  4.          <script type="text/javascript" src="jquery-1.4.4.js"></script>
  5.          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6.          <script type="text/javascript">
  7.               $(document).ready(function(){
  8.                     function test(){
  9.                         var a=1
  10.                         if(a!=0){
  11.                              alert("stava");
  12.                              function stava(){
  13.                                   alert("stava");
  14.                              }
  15.                         }
  16.                    }
  17.  
  18.                     $("#testbutton").click(function(){
  19.                         test();
  20.                     });
  21.               });
  22.  
  23.  
  24.          </script>
  25.          <title>SetTimeOut</title>
  26.     </head>
  27.     <body>
  28.          <input type="submit" value="natisnime" name="sub" id="testbutton"/>
  29.     </body>
  30. </html>

По този начин пишеш във същата област на видимост в която е декларирана функцията и при извикването и js ще търси първо там и в последствие ако не открие ще се обърне към глобалната.

p.s. Само не разбрах $(document).ready(function(){} и съкратеното изписване какво общо имат

svet1bg

  • Full Member
  • ***
  • Благодарности
  • -Казани: 1
  • -Получени: 1
  • Публикации: 124
Re: Нещо не ми овира в главата защо така неработи ?
« Отговор #2 -: 16 Декември 2010, 15:36:52 »
Благодаря за отговора с помоша на Питанката и с твоя помощ успях да го проумея това нещо  :o
 А колкото до пълното и съкратеното писане на стар да не би аз да сам объркал нещо си

НО все пак благодаря за примера това е доста добре онагледено защо така работи а така не  :P

==================================================================
Редактирано :

можеш ли да ми кажеш как мога тука на тожа нещо да избегна setTimeOut() има ли друг начин да написша това

линкче да видш за какво иде реч :)

Код: Javascript
  1. <!--
  2. To change this template, choose Tools | Templates
  3. and open the template in the editor.
  4. -->
  5. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  6. <html>
  7.      <head>
  8.           <script type="text/javascript" src="jquery-1.4.4.js"></script>
  9.           <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  10.           <style type="text/css">
  11.                #l_forma {
  12.                     display:none;
  13.                }
  14.           </style>
  15.           <script type="text/javascript">
  16.                function pokazvane() {
  17.                     $("#l_forma").toggle("slow");
  18.                     $("#but").hide();
  19.                }
  20.                var timerID = null;
  21.                $("#but").hide();
  22.                function DelayedAlert () {
  23. //                    if (timerID === null) { // to avoid multiple registration
  24.                          setTimeout ("DisplayAlert ()", 3000);
  25. //                         EnableCancelButton (true);
  26. //                    }
  27.                }
  28.  
  29.                function DisplayAlert () {
  30.                     var usser_name = $("#u_name").val();
  31.                     var usser_pass = $("#u_pass").val();
  32.                     var re_pass = $("#r_pass").val();
  33.                     if(usser_pass==re_pass){
  34.                          $("#but").show();
  35.                     } else {
  36.                          alert (&#39;Usser Pass ne savpada s RE Pass&#39;);
  37.                          CancelTimer ();
  38.                     }
  39.                }
  40.           </script>
  41.           <title>setTimeOut</title>
  42.      </head>
  43.      <body>
  44.           <center id="center">
  45.                <div id="login_forma">
  46.                     <a href="login.php">NACHALO</a> |
  47.                     <a href="#" onclick="pokazvane()">LOGIN FORMA</a>
  48.                     <form id="l_forma" name="forma" action="#" method="POST" enctype="multipart/form-data" >
  49.                          <div id="usser_name">
  50.                               User Name :<br>
  51.                               <input id="u_name" type="text" name="user_name" value="" />
  52.                          </div>
  53.                          <div id="usser_pass">
  54.                               User Pass :<br>
  55.                               <input id="u_pass" type="password" name="user_pass" value="" />
  56.                          </div>
  57.                          <div id="re_pass">
  58.                               RE Pass :<br>
  59.                               <input id="r_pass" type="password" value="" name="re_pass" onclick="DelayedAlert ();"/>
  60.                          </div>
  61.                          <div id="buton">
  62.                               <br>
  63.                               <input id="but" type="submit" name="sub" value="SUBMIT" onclick="verLogin()"/>
  64.                          </div>
  65.                     </form>
  66.                </div>
  67.           </center>
  68.      </body>
  69. </html>
  70.  
  71.  


 
« Последна редакция: 16 Декември 2010, 15:43:35 от svet1bg »

NoBBy

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 4
  • -Получени: 38
  • Публикации: 309
Re: Нещо не ми овира в главата защо така неработи ?
« Отговор #3 -: 16 Декември 2010, 16:38:18 »
Линкчето не работи. Кажи какво се опитваш да постигнеш, че не ми стана много ясно.

echeveria

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 72
  • -Получени: 94
  • Публикации: 4836
Re: Нещо не ми овира в главата защо така неработи ?
« Отговор #4 -: 16 Декември 2010, 16:51:46 »
Линка не работи - щото си е изключил компа :)
Днес Печатарите използват парите за да купят мозъците на онези, които ги превъзхождат, за да ги накарат да им служат и така да се превърнат в жертва на посредствеността. Това ли е причината, поради която ги наричате благо?
<iframe src="http://www.corbindavenport.com/ubuntu/widget.html" style="width:

wuser

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 85
  • -Получени: 49
  • Публикации: 2761
Re: Нещо не ми овира в главата защо така неработи ?
« Отговор #5 -: 16 Декември 2010, 18:14:12 »
svet1bg много често даваш примери от твоя комп. Тогава защо не си вземеш един динамичен диенес и някакъв домейн (може и от безплатните *.cc). Сега като гледам май на всякъде даваш един и същ ИП. Да не е статичен? Е ако е така не ти трябва услуга като дднс.
Мъдростта на патилото
Perl Monks: PHP - it's "training wheels without the bike" -- Randal L. Schwartz


Дееба... чувствам се все едно обяснявам на майка ми как да си отвори пощата
"не работи"
WTF?!?!? к'во значи че не работи?
Не ти се компилира, дава ти грешка, вади ти грешни резултати, компютърът ти се изключва като го напишеш или на целия квартал му спира тока?
Stilgar

NoBBy

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 4
  • -Получени: 38
  • Публикации: 309
Re: Нещо не ми овира в главата защо така неработи ?
« Отговор #6 -: 16 Декември 2010, 18:44:41 »
@echeveria, досетих се ;)
@svet1bg, ако правилно съм разбрал искаш бутона да се появява само когато потребителя е въвел валидни данно, в случая еднакви пароли.
Ако е това случая, интервала не ти е необходим, проверката трябва да се изпълнява при натискане на клавиш от клавиатурата докато фокуса е в полето за повторна парола. Може да добавиш и събитие при paste.
Със jQuery това е доста лесно, виж тук за повече информация и пиши пак ако възникне проблем :)

svet1bg

  • Full Member
  • ***
  • Благодарности
  • -Казани: 1
  • -Получени: 1
  • Публикации: 124
Re: Нещо не ми овира в главата защо така неработи ?
« Отговор #7 -: 16 Декември 2010, 20:52:45 »
Добре де сорри доставчика имаха повреда не че си бях спрял компа ама това няма знчение аз съм виновен че не се подсигурих със резервен вариянт. Колкото до моето ИП да статично е (реално) незнам как е по правилно да се каже с две думи не е по DHCP (не се променя всеки път когато си рестартирам компютъра).

Ето едното линкче:
Удома
ето и другото линкче за подсигоряване:
Нагости

И аз си помислих че може да се направи със keyup() но незнам точно как като се има предвид че на клавиатурата има поне 105 бутона и не се знае кой бутон ще натисне потребителя че да го проверявам по keyup().
JQuery линкът дето си ми го дал първо требе да разбера точно какво прави защото аз не разбирам нищо от ДЖАБА :) JS da не се обиди някой.

Благодаря за съдействието, успех на всички.

Pitankata

  • Мно'о доблестни
  • Hero Member
  • ***
  • Благодарности
  • -Казани: 89
  • -Получени: 136
  • Публикации: 1321
  • ПАЗИТЕЛ НА ЧАТА
Re: Нещо не ми овира в главата защо така неработи ?
« Отговор #8 -: 16 Декември 2010, 21:24:03 »
нещо пак не си зацепил идеята ...
при keyup()   взимаш .val() на второто поле и го сравняваш с първото ... мисля че NoBBy това имаше в предвид...
Мързелът всъщност е доста гадна работа, не можеш да спреш за да си починеш...

svet1bg

  • Full Member
  • ***
  • Благодарности
  • -Казани: 1
  • -Получени: 1
  • Публикации: 124
Re: Нещо не ми овира в главата защо така неработи ?
« Отговор #9 -: 16 Декември 2010, 22:04:42 »
Извинявам се за написаните по горе глупости но все още не бях осъзнал как точно работи това нещо кейуп() но сега вече знам и си поправих грешката :)

линкче