Changement de valeur de variable par comparaison

Nico_35136 Messages postés 55 Date d'inscription mercredi 3 janvier 2007 Statut Membre Dernière intervention 21 février 2012 - 26 janv. 2010 à 16:43
Nico_35136 Messages postés 55 Date d'inscription mercredi 3 janvier 2007 Statut Membre Dernière intervention 21 février 2012 - 28 janv. 2010 à 18:46
Bonjour,

J'aurai besoin de votre aide, le code ci dessous utilise une librairie nommé protovis, ce code me permet d'afficher une horloge assez sympa.
Je voudrai la modifier légèrement pour qu'elle soit d'une couleur précise entre 23h30 et 7h30 et d'une autre le reste de temps.

Du coup j'ai déclaré en dessous du head un var
var couleur;


ensuite je fais la comparaison :
    if (hour >= 7 && minute >= 30){
       if (hour =<23 && minute =< 30){
       couleur = 125;}}
        
    else couleur =250;


mais ces code ne fonctionnent pas pouvez vous me dire ou est ce que je me trompe ?

Merci et bonne journée

<html>
  <head>
    <title>PolarClock</title>
    <link type="text/css" rel="stylesheet" href="ex.css?3.1"/>
    <script type="text/javascript" src="/Users/Nico/Downloads/protovis-3.1/protovis-d3.1.js"></script>
    <style type="text/css">
      body {
        background: #222;
      }
      #fig {
        width: 768px;
        height: 768px;
      }
      #label {
        position: absolute;
        bottom: 10px;
        right: 10px;
        font: 10px sans-serif;
        color: #999;
      }
      #label a {
        color: #ccc;
      }
    </style>
  </head>
  


    <script type="text/javascript+protovis">

      var radius = 768 / 2;
      var couleur;
      


      /* Generate the fields for the given date. */
      function fields() {
        var d = new Date();

        function days() {
          return 32 - new Date(d.getYear(), d.getMonth(), 32).getDate();
        }

        var second = (d.getSeconds() + d.getMilliseconds() / 1000) / 60;
        var minute = (d.getMinutes() + second) / 60;
        var hour = (d.getHours() + minute) / 24;
        var weekday = (d.getDay() + hour) / 7;
        var date = (d.getDate() - 1 + hour) / days();
        var month = (d.getMonth() + date) / 12;

        return [
            { value: second, index: .7, text: d.format("%S s") },
            { value: minute, index: .6, text: d.format("%M m") },
            { value: hour, index: .5, text: d.format("%H h") },

            { value: weekday, index: .3, text: d.format("%a") },
            { value: date, index: .2, text: d.format("%d d") },
            { value: month, index: .1, text: d.format("%b") }
          ];
      }

    if (hour >= 7 && minute >= 30){
        if (hour =<23 && minute =< 30){
        couleur = 125;}}
        
    else couleur =250;
        
      var vis = new pv.Panel()
          .width(radius * 2)
          .height(radius * 2);

      vis.add(pv.Wedge)
          .data(fields)
          .left(radius)
          .bottom(radius)
          .innerRadius(function(d) radius * d.index)
          .outerRadius(function(d) radius * (d.index + .1))
          .startAngle(-Math.PI / 2)
          .angle(function(d) 2 * Math.PI * d.value)
          .fillStyle(function(d) "hsl(" + (couleur) + ", 50%, 50%)")
          .lineWidth(4)
          .strokeStyle("#222")
        .anchor("end").add(pv.Label)
          .font("bold 12px sans-serif")
          .textStyle("#000")
          .textMargin(7)
          .text(function(d) d.text);

      setInterval(function() vis.render(), 50);

    </script>
  


  
</html>

11 réponses

@karamel Messages postés 1815 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2022 145
26 janv. 2010 à 22:21
bonjour

essai en separant chaques condition et aussi il manque les accolades dans les else

 if (hour >= 7 && minute >= 30){
       couleur = 125;}
    else{
    couleur =250;}

    if (hour =<23 && minute =< 30){
       couleur = 125;}
    else{
    couleur =250;}



cette syntaxe marche peut etre mais pas sure

if ((hour >= 7 && minute >= 30)||(hour =<23 && minute =< 30)){
       couleur = 125;}
     else{
    couleur =250;}
0
Nico_35136 Messages postés 55 Date d'inscription mercredi 3 janvier 2007 Statut Membre Dernière intervention 21 février 2012
26 janv. 2010 à 22:30
merci pour ta réponse j'ai essayé les deux code mais ... le code ne ce lance plus je commence a douter des variable minute et hour ....
0
@karamel Messages postés 1815 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2022 145
26 janv. 2010 à 22:35
met une alert pour voir ce que te retourne les variable

var minute = (d.getMinutes() + second) / 60;
alert(minute)
var hour = (d.getHours() + minute) / 24;
alert(hour)
0
Nico_35136 Messages postés 55 Date d'inscription mercredi 3 janvier 2007 Statut Membre Dernière intervention 21 février 2012
26 janv. 2010 à 22:49
bon le problème venais bien de la voici ce que cela me retourne :

0.9447653935185185

0.69403

0.9455845833333334

0.7061466666666667

.....

alors que la fonction hsl n'accepte que des valeurs allants de 0 à 360
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nico_35136 Messages postés 55 Date d'inscription mercredi 3 janvier 2007 Statut Membre Dernière intervention 21 février 2012
26 janv. 2010 à 22:54
je vien de réaliser ce que je vient de dire c'étais un peu idiot .... couleur sera toujours entre 0 et 360 car je les met à 250 ou 125
0
Nico_35136 Messages postés 55 Date d'inscription mercredi 3 janvier 2007 Statut Membre Dernière intervention 21 février 2012
27 janv. 2010 à 16:30
j'ai donc modifié comme il le fallait le code j'ai donc :
        var minute = (d.getMinutes() + second) / 60;
        var min = (d.getMinutes());
        var hour = (d.getHours() + minute) / 24;
        var heure = (d.getHours());


grace au alerte je peu voir que min et heure sont bien les valeurs de l'heure actuel ex : 12h05

ensuite j'ai bien mit
 if (hour >= 7 && minute >= 30){
       couleur = 125;}
    else{
    couleur =250;}

    if (hour =<23 && minute =< 30){
       couleur = 125;}
    else{
    couleur =250;}


Mais ça déconne toujours ....
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 16
27 janv. 2010 à 19:04
Bonjour,
ton test me parait un peu hasardeux
SI tu as par exemple 8h20 ALORS 8 est effectivement SUP à 7 mais 20 est INF à 30 donc le résultat est FAUX.
Je te propose une autre approche, qui consiste à comparer les heures exprimées en minute
var iMini = ( 7 *60) + 30;             // limite inferieure
var iMaxi = ( 23 *60) + 30;            // limite superieure
var iTest = ( hour *60) + minute;      // valeur a tester
couleur = 125;                         // valeur par defaut
if(( iTest < iMini)||( iTest > iMaxi)) // le test des valeurs
  couleur = 250;

c'est une façon d'y arriver...
;O)
0
Nico_35136 Messages postés 55 Date d'inscription mercredi 3 janvier 2007 Statut Membre Dernière intervention 21 février 2012
27 janv. 2010 à 21:58
c'est vraiment très étrange, il y a qqch qui m'échappe ...
je rentre ce code pour commencer :
        var iMini = ( 7 *60) + 30;
        alert (iMini);
        var iMaxi = ( 23 *60) + 30;
        alert (iMaxi);


Je retrouve bien 450 et 1410 , normal mais il faut que je clique sur les 2 OK des popups pour que l'horloge s'affiche

Ensuite quand je rajoute la ligne suivante :
var iTest = ( hour *60) + minute;


Et bien l'horloge ne s'affiche plus ... comment interprétez vous cela ?
0
Nico_35136 Messages postés 55 Date d'inscription mercredi 3 janvier 2007 Statut Membre Dernière intervention 21 février 2012
27 janv. 2010 à 22:06
je vous donne le lien pour voir ce que cela fait :horloge
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 16
28 janv. 2010 à 18:17
Bonjour,
je viens d'aller jeter un coup d'oeil sur ta source et premier constat il faut être vicieux pour trouver un tel script qui, soit dis en passant, ne fonctionne pas sous IE, enfin chez moi...;0)

Tu ne mets pas la partie test au bon endroit...
...ce test doit se trouver dans la function fields() avant le return[...]
;O)
0
Nico_35136 Messages postés 55 Date d'inscription mercredi 3 janvier 2007 Statut Membre Dernière intervention 21 février 2012
28 janv. 2010 à 18:46
en effet ce script est assez tordu mais bon il n'est pas de moi moi de mon coté cela fonctionne bien avec safari je feras des test de compatibilité plus tard merci beaucoup pour votre aide, je verrais à 23 h30 si elle a changé de couleur.
0