Changement de valeur de variable par comparaison

Signaler
Messages postés
55
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
21 février 2012
-
Messages postés
55
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
21 février 2012
-
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

Messages postés
1797
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
21 novembre 2021
139
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;}
Messages postés
55
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
21 février 2012

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 ....
Messages postés
1797
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
21 novembre 2021
139
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)
Messages postés
55
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
21 février 2012

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
Messages postés
55
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
21 février 2012

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
Messages postés
55
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
21 février 2012

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 ....
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
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)
Messages postés
55
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
21 février 2012

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 ?
Messages postés
55
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
21 février 2012

je vous donne le lien pour voir ce que cela fait :horloge
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
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)
Messages postés
55
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
21 février 2012

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.