Comment résoudre Deux S'immiscer Fonctions Javascript

  • mindfullsilence
  • Professor
  • Professor
  • Avatar de l’utilisateur
  • Inscription: Aoû 04, 2008
  • Messages: 846
  • Status: Offline

Message Mai 13th, 2009, 7:14 am

J'ai deux fonctions. On rétrécit un div à 0px de hauteur, et l'autre, il redimensionne à 225px de haut. Chacun est appelé par un gestionnaire d'événements dans un groupe de radio. Heres un peu de code par exemple.
Code: [ Select ]
<html>
<head>
<style type="text/javascript">
function grow(id) {
    h=document.getElementById(id).offsetHeight;
    if(h<75) {
        document.getElementById(id).style.height=h+15+'px';
    }
    else if(h<150) {
        document.getElementById(id).style.height=h+10+'px';
    }
    else if(h<250) {
        document.getElementById(id).style.height=h+5+'px';
    }
}   
 
function shrink(id) {
    h=document.getElementById(id).offsetHeight;
    if(h>200) {
        document.getElementById(id).style.height=h-25+'px';
    }
    else if(h>150) {
        document.getElementById(id).style.height=h-10+'px';
    }
    else if(h>0) {
        document.getElementById(id).style.height=h-5+'px';
    }
}
</style>
 
<style type="text/css">
#the_div {
    height: 0px;
        border: #000 solid 2px;
    overflow: hidden;
}
</style>
</head>
 
 
<body>
<div id="the_div"></div>
            <label>Advanced Search Options: </label>
            <br />
                <label>
                <input name="RadioGroup1" type="radio" id="RadioGroup1_0" onclick="setInterval('grow(\'the_div\')',20);" value="radio" />
            </label>
                <label>On</label>
            <br />
                <label>
                <input name="RadioGroup1" type="radio" id="RadioGroup1_1" onclick="setInterval('shrink(\'the_div\')',20);" value="radio" checked="checked" />
                </label>
                <label> Off</label>
</body>
</html>
 
  1. <html>
  2. <head>
  3. <style type="text/javascript">
  4. function grow(id) {
  5.     h=document.getElementById(id).offsetHeight;
  6.     if(h<75) {
  7.         document.getElementById(id).style.height=h+15+'px';
  8.     }
  9.     else if(h<150) {
  10.         document.getElementById(id).style.height=h+10+'px';
  11.     }
  12.     else if(h<250) {
  13.         document.getElementById(id).style.height=h+5+'px';
  14.     }
  15. }   
  16.  
  17. function shrink(id) {
  18.     h=document.getElementById(id).offsetHeight;
  19.     if(h>200) {
  20.         document.getElementById(id).style.height=h-25+'px';
  21.     }
  22.     else if(h>150) {
  23.         document.getElementById(id).style.height=h-10+'px';
  24.     }
  25.     else if(h>0) {
  26.         document.getElementById(id).style.height=h-5+'px';
  27.     }
  28. }
  29. </style>
  30.  
  31. <style type="text/css">
  32. #the_div {
  33.     height: 0px;
  34.         border: #000 solid 2px;
  35.     overflow: hidden;
  36. }
  37. </style>
  38. </head>
  39.  
  40.  
  41. <body>
  42. <div id="the_div"></div>
  43.             <label>Advanced Search Options: </label>
  44.             <br />
  45.                 <label>
  46.                 <input name="RadioGroup1" type="radio" id="RadioGroup1_0" onclick="setInterval('grow(\'the_div\')',20);" value="radio" />
  47.             </label>
  48.                 <label>On</label>
  49.             <br />
  50.                 <label>
  51.                 <input name="RadioGroup1" type="radio" id="RadioGroup1_1" onclick="setInterval('shrink(\'the_div\')',20);" value="radio" checked="checked" />
  52.                 </label>
  53.                 <label> Off</label>
  54. </body>
  55. </html>
  56.  


Vous pouvez regarder leur lutte pour le pouvoir ici:
http://xaetrex.net/voltecdesign/mockup/

Switch de OFF à ON et regarder ce qui se passe. Theyre tente manifestement de travailler, mais elle n'avance pas très bien. Anyone know why?
Use your words like arrows to shoot toward your goal.
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Mai 13th, 2009, 7:14 am

  • UPSGuy
  • Lurker ಠ_ಠ
  • Web Master
  • Avatar de l’utilisateur
  • Inscription: Juil 25, 2005
  • Messages: 2735
  • Loc: Nashville, TN
  • Status: Offline

Message Mai 13th, 2009, 8:38 am

Le problème est que les intervalles ne sont pas effacés lorsque votre IFS complet ou une action différente est prise - il ya de meilleures façons de réaliser ce que vous recherchez. Souhaitez-vous être opposé à l'apprentissage d'une tache de jQuery pour cela?

Code: [ Select ]
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
   
    <script>    
      $(document).ready(function(){
          $("button").click(function () {
              $("#the_div").toggle("slow");
          });
      });
    </script>
   
  </head>
 
  <body>
    <button>Toggle</button>
    <div id="the_div" style="height: 200px; width: 200px; background-color: #ccc;"></div>
  </body>
 
</html>
 
  1.  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  3. <html>
  4.   <head>
  5.     <script src="http://code.jquery.com/jquery-latest.js"></script>
  6.    
  7.     <script>    
  8.       $(document).ready(function(){
  9.           $("button").click(function () {
  10.               $("#the_div").toggle("slow");
  11.           });
  12.       });
  13.     </script>
  14.    
  15.   </head>
  16.  
  17.   <body>
  18.     <button>Toggle</button>
  19.     <div id="the_div" style="height: 200px; width: 200px; background-color: #ccc;"></div>
  20.   </body>
  21.  
  22. </html>
  23.  


Le voir en action ici
I'd love to change the world, but they won't give me the source code.
  • mindfullsilence
  • Professor
  • Professor
  • Avatar de l’utilisateur
  • Inscription: Aoû 04, 2008
  • Messages: 846
  • Status: Offline

Message Mai 13th, 2009, 10:18 am

pas du tout, même si je ne veux pas étirer moi aussi mince javascript sur ce processus d'apprentissage. Donner à ce malade d'essayer et de revenir vers vous dans quelques minutes.

Pourriez-vous expliquer l'esprit whats passe dans le code? Que devrais-je être à la recherche de la source en lien: http://code.jquery.com/jquery-latest.js .

Et est-il possible de garder la largeur constante. c'est-à-dire modifier les propriétés des paramètres de jQuery.?
Use your words like arrows to shoot toward your goal.
  • dark_lord
  • Graduate
  • Graduate
  • Avatar de l’utilisateur
  • Inscription: Jan 14, 2009
  • Messages: 162
  • Loc: India-Kolkata
  • Status: Offline

Message Mai 13th, 2009, 10:19 am

Pourquoi utilisez-vous les 20 millisecondes?

voulez-vous grandir et rétrécir automatiquement après 20sec?

Je suppose que la seule chose que vous voulez. soit réduire ou développer?

si vous voulez les deux, ils se battront :D

si vous ne voulez pas automatiquement puis supprimez la fonction setInterval?

Je ne comprends vraiment pas ce que vous avez voulu faire ici?

Si vous vouliez diminuer lorsqu'elle est cultivée, pleine et la croissance lorsque tous les rétrécir, alors vous pouvez penser seTimeout fonction appelée de façon appropriée dans le cadre de la fonction.
Wrap Up your Big Url | Mariana World Community
  • UPSGuy
  • Lurker ಠ_ಠ
  • Web Master
  • Avatar de l’utilisateur
  • Inscription: Juil 25, 2005
  • Messages: 2735
  • Loc: Nashville, TN
  • Status: Offline

Message Mai 13th, 2009, 10:28 am

dark_lord - l'intention est de passer de rétraction / la croissance de la div (faire croître visible, il est rétractable cacher). Les 20 millions de "animer" la croissance / rétrécir. Image avec le code clearIntervals convenablement établi et que vous mai obtenir l'essentiel.

Cliquez sur: - la div augmente en place
Cliquez off - l'écart se rétrécit div et des peaux

Les deux propositions semblent "animé" en raison de l'intervalle
I'd love to change the world, but they won't give me the source code.
  • mindfullsilence
  • Professor
  • Professor
  • Avatar de l’utilisateur
  • Inscription: Aoû 04, 2008
  • Messages: 846
  • Status: Offline

Message Mai 13th, 2009, 10:29 am

Je tiens à croître lorsque vous choisissez, et rétrécir lorsque vous choisissez off. Si j'utilise setTimeout dans la fonction que la fonction initialise le chargement de la page si je me dois de setTimeout dans un événement appelant. Je veux »the_div" pour augmenter ou diminuer la taille (en fonction de ce que vous cliquez sur le bouton radio) progressivement, jusqu'à ce qu'il atteigne les seuils (0px pour rétrécir, et 225 pour la croissance).

Edit: euh, ouais...ce qui UPSguy dit, lol. Je suppose que nous avons publié en même temps.
Use your words like arrows to shoot toward your goal.
  • UPSGuy
  • Lurker ಠ_ಠ
  • Web Master
  • Avatar de l’utilisateur
  • Inscription: Juil 25, 2005
  • Messages: 2735
  • Loc: Nashville, TN
  • Status: Offline

Message Mai 13th, 2009, 10:32 am

Vous avez créé votre code à droite - le problème est que vous n'avez pas les intervalles correctement (sans doute mon mauvais pour ne pas que l'introduction à mon exemple de code dans l'autre thread).

Vous avez de l'imaginer comme ça - quand vous cliquez sur Oui ou Non, vous avez dit en substance «l'appel de cette fonction, toutes les 20 millisecondes. Même après que le seuil est atteint, la fonction est encore objet de l'appel, sa peine que theres aucun travail à faire, de sorte que la div ne change pas.

Désormais, lorsque vous cliquez sur le choix opposés, vous dites que la même chose, et puis vous avez deux fonctions "combattre". Une fois le rétrécissement ne suffit à diminuer la hauteur est inférieure au seuil, la croissance immédiatement l'effet inverse, en donnant l'apparence d'un conflit.

Alors que faire si vous désactivez l'intervalle une fois que le seuil est atteint? Toujours pas assez bon, parce que dans le cas où quelqu'un à cliquer sur puis sur Off avant la div a été terminé "croissance", alors vous avez le même conflit.

J'ai recommandé à jQuery ici peut-être éviter certains vars global de eventlisteners.
I'd love to change the world, but they won't give me the source code.
  • mindfullsilence
  • Professor
  • Professor
  • Avatar de l’utilisateur
  • Inscription: Aoû 04, 2008
  • Messages: 846
  • Status: Offline

Message Mai 13th, 2009, 11:02 am

ok, youve m'a vendu sur jQuery et je pense faire le mauvais recherche. Pour l'instant, je besoin de cette maquette assez rapidement pour la société de révision. Comment puis-je effacer l'intervalle? Id à utiliser ce code, jusqu'à ce que je figure sur tous les rouages de jQuery au cours de la prochaine journée ou deux.
Use your words like arrows to shoot toward your goal.
  • mindfullsilence
  • Professor
  • Professor
  • Avatar de l’utilisateur
  • Inscription: Aoû 04, 2008
  • Messages: 846
  • Status: Offline

Message Mai 13th, 2009, 11:30 am

OK, j'ai trouvé cela, mais ne suis pas sûr de savoir comment l'appliquer à mon code:
http://www.java2s.com/Code/JavaScriptReference/Javascript-Methods/clearIntervalExample.htm

Im pensant que je peut mettre en place le clearInterval à la fin de mes fonctions de "grandir" et "psy". Peut-être quelque chose comme ceci mais cela ne fonctionne pas, je connais son tort. Je peux au moins le regarder et de connaître leurs tort, je ne sais pas pourquoi :( :
Code: [ Select ]
function grow(id) {
    h=document.getElementById(id).offsetHeight;
    if(h<75) {
        document.getElementById(id).style.height=h+15+'px';
    }
    else if(h<150) {
        document.getElementById(id).style.height=h+10+'px';
    }
    else if(h<250) {
        document.getElementById(id).style.height=h+5+'px';
    }
    else if (h==250) {
                window.clearInterval(20);
    }
}   
  1. function grow(id) {
  2.     h=document.getElementById(id).offsetHeight;
  3.     if(h<75) {
  4.         document.getElementById(id).style.height=h+15+'px';
  5.     }
  6.     else if(h<150) {
  7.         document.getElementById(id).style.height=h+10+'px';
  8.     }
  9.     else if(h<250) {
  10.         document.getElementById(id).style.height=h+5+'px';
  11.     }
  12.     else if (h==250) {
  13.                 window.clearInterval(20);
  14.     }
  15. }   
Use your words like arrows to shoot toward your goal.
  • UPSGuy
  • Lurker ಠ_ಠ
  • Web Master
  • Avatar de l’utilisateur
  • Inscription: Juil 25, 2005
  • Messages: 2735
  • Loc: Nashville, TN
  • Status: Offline

Message Mai 13th, 2009, 11:59 am

Quote:
Alors que faire si vous désactivez l'intervalle une fois que le seuil est atteint? Toujours pas assez bon, parce que dans le cas où quelqu'un à cliquer sur puis sur Off avant la div a été terminé "croissance", alors vous avez le même conflit.


Cela devrait répondre à la dernière question. Si je prévoyait une solution simple, je l'aurais jeté ensemble, pour vous, mais je vous a pris le chemin de jQuery pour cette raison. Je préfère laisser faire le cadre le gros pour moi. Peut-être que quelqu'un d'autre le fera voir d'un simple correctif que j'ai oublié et il code pour vous.
I'd love to change the world, but they won't give me the source code.
  • mindfullsilence
  • Professor
  • Professor
  • Avatar de l’utilisateur
  • Inscription: Aoû 04, 2008
  • Messages: 846
  • Status: Offline

Message Mai 13th, 2009, 12:07 pm

Bon, espérons que je puisse obtenir ce jQuery chose assez rapide vers le bas. Merci énormément pour l'aide encore une fois, vos connaissances et votre réactivité font de vous un atout remarquable à ce forum.
Use your words like arrows to shoot toward your goal.
  • UPSGuy
  • Lurker ಠ_ಠ
  • Web Master
  • Avatar de l’utilisateur
  • Inscription: Juil 25, 2005
  • Messages: 2735
  • Loc: Nashville, TN
  • Status: Offline

Message Mai 13th, 2009, 12:12 pm

Merci :) Une fois que vous aurez à leurs connaissances, de vous décider mai Im pas aussi utile que vous en pensez, lol. Je suis heureux d'avoir pu aider. jQuery est une de mes favs, donc si vous avez touché quelque chose, n'oubliez pas de crier pour nous.
I'd love to change the world, but they won't give me the source code.
  • UPSGuy
  • Lurker ಠ_ಠ
  • Web Master
  • Avatar de l’utilisateur
  • Inscription: Juil 25, 2005
  • Messages: 2735
  • Loc: Nashville, TN
  • Status: Offline

Message Mai 13th, 2009, 5:53 pm

MFS, si son OK, mauvais poste ma réponse à votre demande de briser le code ici dans le fil. Permet d'aider quiconque d'autre mai besoin d'aide pour un problème similaire à l'avenir en partageant les informations avec eux, aussi.

Im que vous êtes ok avec le code HTML de la page, si bien que sauter. Par souci de concision, permet de sauter un peu plus de la section de la tête et brièvement que rien theres délicat sujet de la touche ou la div. Rien de nouveau ici.

Maintenant, sauvegardez dans ces balises script regardaient un peu de confusion, laisse donc Break It Down...

Code: [ Select ]
 
<script src="http://code.jquery.com/jquery-latest.js"></script>
 
  1.  
  2. <script src="http://code.jquery.com/jquery-latest.js"></script>
  3.  


Rien d'inhabituel ici. Son juste un simple JavaScript inclure. Whats convient de mentionner, cependant, est que vous importez la fonctionnalité jQuery via ce inclure. Ce fichier lié contient toutes les fonctions qui font de jQuery ce qu'elle est.

Code: [ Select ]
 
$
 
  1.  
  2. $
  3.  


C'est, par exemple - le symbole du dollar plain - est une fonction jQuery. Notez la similitude. Les fonctions sont généralement appelés à l'aide du nom suivi de pare notheses renfermant les paramètres: someFunction (param). Alors $ ( #the_div) n'est pas différente. Ce que cette fonction ne fait, cependant, est très important. Cette fonction agit essentiellement comme un sélecteur. J'ai mis dans une certaine forme de requête et ressorte jQuery une référence à cet objet (ou d'objets, mais laisse garder les choses simples). Dans l'exemple, ont été spécifiant un div par ID, n'est pas sans rappeler la façon dont nous définir le style dans le CSS. Alors, maintenant que nous savons avaient affaire à des objets, permet de regarder le code de nouveau.

Code: [ Select ]
 
$(document).ready(function(){
           $("button").click(function () {
               $("#the_div").toggle("slow");
           });
       });
 
  1.  
  2. $(document).ready(function(){
  3.            $("button").click(function () {
  4.                $("#the_div").toggle("slow");
  5.            });
  6.        });
  7.  


Ok, nous savons que le code JS dans la balise HEAD d'un document est traité comme son rencontrées (pour ainsi dire - don't get techniques sur moi, jouaient simple ici). Nous ne voyons pas une fonction étant défini dans le sens typique de l'utilisation, donc nous pouvons supposer que cela doit être une commande qui sera traitée quand elle est vue. Je pense que nous pouvons maintenant tirer en toute sécurité que "$ (document)" consiste à référencer l'objet document. Nous savons que nous utilisons le point (.) Pour accéder aux membres de choses, si ». Prêt ()", ". Click ()", et ". Toggle ()" doivent être les fonctions de ce sélecteur nous avons parlé. Creusant un peu dans la documentation jQuery et nous pouvons trouver exactement ce que chacune de ces fonctions ne.

Une dernière chose, je tiens à souligner avant d'aller à pseudocode. Les fonctions peuvent être passés comme paramètres, et en même temps, être définie en place. La plupart du temps lorsque vous voyez ce en jQuery, ce que vous regardez est une balise le long de la fonction (pour dire que la fonction que, quand il comprend ce à quoi la partie est de premier plan, l'assigner à celle-ci). Jetez un oeil sur ces deux bits:

Code: [ Select ]
 
-------------------------------------
$(document).ready(function(){
           $("button").click
-------------------------------------
$("button").click(function () {
#               $("#the_div").toggle
-------------------------------------
 
  1.  
  2. -------------------------------------
  3. $(document).ready(function(){
  4.            $("button").click
  5. -------------------------------------
  6. $("button").click(function () {
  7. #               $("#the_div").toggle
  8. -------------------------------------
  9.  


La première dit lorsque vous avez terminé de déterminer ce qui "prête" la fonction fait référence, lui donner cette fonction Button.Click. La deuxième partie explique hé, quand vous avez défini l'Button.Click qui est, lui demandez de faire cette fonction bascule.

On y est presque...

Code: [ Select ]
 
$(document).ready(function(){
           $("button").click(function () {
               $("#the_div").toggle("slow");
           });
       });
 
  1.  
  2. $(document).ready(function(){
  3.            $("button").click(function () {
  4.                $("#the_div").toggle("slow");
  5.            });
  6.        });
  7.  


Heres comment le traduire tout:

Disaient que lorsque le document est prêt, je veux que vous Affecter cette action à bascule au clic de ce bouton qui étaient en précisant. Nous pouvons les docs de référence, une dernière fois et de voir que bascule est juste une autre fonction jQuery qui anime essentiellement l'affichage et le masquage d'un élément sur la page. Ainsi, thats ce que nous avons - lorsque l'utilisateur appuie sur le bouton, nous indiquons à jQuery pour basculer la div.

À cet effet, nous ne nous soucions pas comment jQuery décide quelles mesures elle doit prendre ou comment sa va s'occuper comme elle le fait (en dehors de l'évidence "lent" paramètre), nous nous soucions seulement qu'il est fait.
I'd love to change the world, but they won't give me the source code.
  • mindfullsilence
  • Professor
  • Professor
  • Avatar de l’utilisateur
  • Inscription: Aoû 04, 2008
  • Messages: 846
  • Status: Offline

Message Mai 13th, 2009, 6:29 pm

Wow, c'est vraiment génial. $ Est donc essentiellement la fonction jQuery pour trouver quelque chose comme. Bouton. Click, ou. Alterner intérieur du fichier jQuery. Est-ce une interprétation correcte?
Use your words like arrows to shoot toward your goal.
  • UPSGuy
  • Lurker ಠ_ಠ
  • Web Master
  • Avatar de l’utilisateur
  • Inscription: Juil 25, 2005
  • Messages: 2735
  • Loc: Nashville, TN
  • Status: Offline

Message Mai 13th, 2009, 6:34 pm

Hmm, à proximité - le dollar fonction signe est plus proche de sélecteurs objet JavaScript DOM. Considérons les extraits suivants.

Sélecteur CSS pour définir les styles sur un div par id:
Code: [ Select ]
 
div#myDiv { color: black; }
 
  1.  
  2. div#myDiv { color: black; }
  3.  


Méthode JavaScript d'obtenir un div par id:
Code: [ Select ]
 
document.getElementById('myDiv')
 
  1.  
  2. document.getElementById('myDiv')
  3.  


Et jQuerys moyen de sélectionner un div par id:
Code: [ Select ]
 
$('#myDiv')
 
  1.  
  2. $('#myDiv')
  3.  


le bouton.,. cliquez sur, et. toggle sont toutes des fonctions jQuery étant appelée sur l'objet élément. De la même manière que javascript sait que «getElementById» est une fonction qui peut être appelée sur le document, jQuery sait. Clic est une méthode qui peut être appelée sur l'objet sélectionné.
I'd love to change the world, but they won't give me the source code.
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Mai 13th, 2009, 6:34 pm

Afficher de l'information

  • Total des messages de ce sujet: 22 messages
  • Utilisateurs parcourant ce forum: demonmaestro et 131 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC