none
Problème javascript et winjs RRS feed

  • Discussion générale

  • Mon fichier default.js

    // Pour obtenir une présentation du modèle Vide, consultez la documentation suivante :
    // http://go.microsoft.com/fwlink/?LinkId=232509
    (function () {
        "use strict";
    
        var app = WinJS.Application;
        var activation = Windows.ApplicationModel.Activation;
    
        app.onactivated = function (args) {
            if (args.detail.kind === activation.ActivationKind.launch) {
                if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) {
                    // TODO: cette application vient d'être lancée. Initialisez
                    // votre application ici.
                    function Salaire(hn, hb, mn, mb, an, ab, hh, a, ch) {
                        this.hn = hn; /* heure net */
                        this.hb = hb; /* heure brut */
                        this.mn = mn; /* mois net */
                        this.mb = mb; /* mois brut */
                        this.an = an; /* année net */
                        this.ab = ab; /* année brut */
                        this.phn = hn; /* +/- heure net */
                        this.phb = hb; /* +/- heure brut */
                        this.pmn = mn; /* +/- mois net */
                        this.pmb = mb; /* +/- mois brut */
                        this.pan = an; /* +/- année net */
                        this.pab = ab; /* +/- année brut */
                        this.hh = hh; /* horraire hebdomadaire */
                        this.a = a; /* nombre de mois dans l'année */
                        this.ch = ch; /* % de charges */
                        this.source = 'mb'; /* salaire à convertir */
                        this.unite = '€'; /* Unité des nombres à afficher */
                        /* Filtre le texte saisi de tout caractère qui ne soit pas un nombre */
                        this.filtre = function (valeur) {
                            if (isNaN(valeur)) {
                                valeur = valeur.replace(',', '.').replace(/ /gi, '');
                                //console.log('r '+valeur);
                                valeur = parseFloat(valeur);
                                //console.log('p '+valeur);
                            }// else {console.log('int '+valeur);}
                            if (valeur == valeur + '') {
                                return valeur;
                            } else {
                                return 0;
                            }
                        };
                        /* Mise en forme des nombres avec espace comme séparateur des millier et , pour le décimales */
                        this.forme = function (propriete, valeur) {
                            // découpe de la partie décimale
                            valeur = valeur.toString();
                            //console.log('valeur: '+typeof valeur+' '+valeur);
                            valeur = valeur.split('.', 2);
                            //console.log('split '+valeur[0]+' '+valeur[1]);
                            // ajout des espaces
                            retour = '';
                            l = Math.floor(valeur[0].length / 3);
                            ll = valeur[0].length;
                            d = 0;
                            f = ll - l * 3;
                            //console.log('l '+l);
                            for (var i = 0 ; i <= l ; i++) {
                                retour += ' ' + valeur[0].substring(d, f + i * 3);
                                d = f + i * 3;
                                //console.log('découpe '+i+' d('+d+') f('+eval(f+i*3)+')');
                            }
                            //console.log('substring '+retour);
                            // concaténation avec l'unité
                            switch (propriete) {
                                case 'hh':
                                    this.unite = '';
                                    break;
                                case 'a':
                                    this.unite = '';
                                    break;
                                case 'ch':
                                    this.unite = ' %';
                                    break;
                                default:
                                    this.unite = ' €';
                            }
                            if (typeof valeur[1] == 'undefined') {
                                valeur = retour + this.unite;
                            } else {
                                valeur = retour + ',' + valeur[1] + this.unite;
                            }
                            return valeur;
                            //console.log('r '+valeur);
                        };
    
                        /* Converti les salaires */
                        this.setSalaire = function (propriete, valeur) {
                            //console.log('setSalaire '+propriete+' '+valeur+' ch '+this.ch);
                            $('a').removeClass("active");
                            switch (propriete) {
                                case 'mb':
                                    //console.log('f '+valeur);
                                    this.hb = Math.round(this.filtre(valeur) / (1.5167 * this.hh / 35)) / 100;
                                    this.source = 'mb';
                                    $('#amn').addClass("active");
                                    $('.pmb').addClass("hidden");
                                    $('.pmn').removeClass("hidden");
                                    break;
                                case 'ab':
                                    this.hb = Math.round(this.filtre(valeur) / (1.5167 * this.a * this.hh / 35)) / 100;
                                    this.source = 'ab';
                                    $('#amn').addClass("active");
                                    $('.pmb').addClass("hidden");
                                    $('.pmn').removeClass("hidden");
                                    break;
                                case 'mn':
                                    this.hb = Math.round(this.filtre(valeur) / ((1.5167 * this.hh / 35) * (1 - this.ch / 100))) / 100;
                                    this.source = 'mn';
                                    $('#amb').addClass("active");
                                    $('.pmn').addClass("hidden");
                                    $('.pmb').removeClass("hidden");
                                    break;
                                case 'hb':
                                    this.hb = Math.round(this.filtre(valeur) * 100) / 100;
                                    this.source = 'hb';
                                    $('#amn').addClass("active");
                                    $('.pmb').addClass("hidden");
                                    $('.pmn').removeClass("hidden");
                                    break;
                                case 'hn':
                                    this.hb = Math.round(100 * this.filtre(valeur) / (1 - this.ch / 100)) / 100;
                                    this.source = 'hn';
                                    $('#ahb').addClass("active");
                                    $('.pmn').addClass("hidden");
                                    $('.pmb').removeClass("hidden");
                                    break;
                                case 'an':
                                    this.hb = Math.round(this.filtre(valeur) / ((1.5167 * this.a * this.hh / 35) * (1 - this.ch / 100))) / 100;
                                    this.source = 'an';
                                    $('#aab').addClass("active");
                                    $('.pmn').addClass("hidden");
                                    $('.pmb').removeClass("hidden");
                                    break;
                                case 'hh':
                                    this.hh = this.filtre(valeur);
                                    //console.log(this.source+': '+$('#'+this.source).val()+' - hh:'+this.hh);
                                    //console.log('hh:'+$('#hh').val());
                                    //console.log(valeur);
                                    if (this.hh == 0) {
                                        this.hh = 35;
                                    }
                                    this.setSalaire(this.source, $('#' + this.source).val());
                                    break;
                                case 'a':
                                    this.a = this.filtre(valeur);
                                    console.log(this.source + ': ' + $('#' + this.source).val() + ' - a:' + this.a);
                                    //console.log('hh:'+$('#hh').val());
                                    //console.log(valeur);
                                    if (this.a == 0) {
                                        this.a = 12;
                                    }
                                    this.setSalaire(this.source, $('#' + this.source).val());
                                    break;
                                case 'ch':
                                    this.ch = this.filtre(valeur);
                                    //console.log(this.source+': '+$('#'+this.source).val()+' - ch:'+this.ch);
                                    this.setSalaire(this.source, $('#' + this.source).val());
                                    break;
                                default:
                                    this.hb = 0;
                            }
                            this.mb = Math.round(this.hb * (151.67 * this.hh / 35));
                            this.mn = Math.round(this.mb * (1 - this.ch / 100));
                            this.hn = Math.round(this.mn / (1.5167 * this.hh / 35)) / 100;
                            this.ab = Math.round(this.mb * this.a);
                            this.an = Math.round(this.mn * this.a);
                            this.phn = Math.round(10 * this.hn * 0.039) / 10;
                            this.phb = Math.round(10 * this.hb * 0.03) / 10;
                            this.pmn = Math.round(this.mn * 0.039);
                            this.pmb = Math.round(this.mb * 0.03);
                            this.pan = Math.round(this.an * 0.039 / 10) * 10;
                            this.pab = Math.round(this.ab * 0.03 / 10) * 10;
                            var input = new Array('hn', 'hb', 'mn', 'mb', 'an', 'ab', 'hh', 'a', 'ch');
                            for (var i = 0; i < input.length; i++) {
                                //console.log('salaire.forme('+input[i]+','+salaire[input[i]]+') > '+salaire.forme(input[i],salaire[input[i]]));
                                $('#a' + input[i]).text(salaire.forme(input[i], salaire[input[i]]));
                                $('#p' + input[i]).text(salaire['p' + input[i]]);
                                if (input[i] != propriete) {
                                    $('#' + input[i]).val(salaire[input[i]]);
                                }
                            }
                        };
                    }
                    var salaire = new Salaire(0, 0, 0, 0, 0, 0, 35, 12, 23);
    
                    $(document).ready(function () {
                        if (typeof (yes) != 'undefined') {
                            var start = Date.now();
                            var sortie = 'rebond';
                            var valeur = 0;
                            //console.log('mb : '+$('#mb').val());
                            $('input').focus(function () {
                                var focusid = this.id;
                                $('input:not(#' + focusid + ')').addClass("hidden");
                                $('a:not(#a' + focusid + ')').removeClass("hidden");
                            });
                            $('input').keyup(function () {
                                salaire.setSalaire(this.id, $(this).val())
                            });
                            $('#calculette a').click(function (e) {
                                var clicid = this.id;
                                $('a').removeClass("hidden");
                                $('input').addClass("hidden");
                                $('#' + clicid).addClass("hidden");
                                $('#' + clicid.substr(1, 2)).removeClass("hidden").select();
                                //console.log(clicid.substr(1,2));
                                e.preventDefault();
                            });
                            $('#smic').click(function () {
                                salaire.setSalaire('hb', $('#smicval').val());
                            });
                            $('#smic2').click(function () {
                                salaire.setSalaire('hb', 9.19)
                            });
                            $('#smic3').click(function () {
                                salaire.setSalaire('hb', 9.22)
                            });
                            //alert ('Sortie '+sortie+' '+valeur);
                            //console.log('Sortie '+sortie+' '+valeur);
                            /* $(window).unload( function () { alert("Bye now!"); } ); */
                            //$(window).unload(function() {
                            /* if (sortie = 'rebond') {
                                var end = Date.now(); 
                                var valeur = Math.round((end - start)/1000)+'s'; 
                            }
                            _gaq.push(['_trackEvent', 'Sortie', sortie, valeur]);
                            alert ('Sortie '+sortie+' '+valeur); */
                            //});
                        };
                    });
    
                } else {
                    // TODO: cette application a été réactivée après avoir été suspendue.
                    // Restaurez l'état de l'application ici.
                }
                args.setPromise(WinJS.UI.processAll());
    
            }
    
        };
    
       
    
        app.oncheckpoint = function (args) {
            // TODO: cette application est sur le point d'être suspendue. Enregistrez tout état
            // devant être conservé lors des suspensions ici. Vous pouvez utiliser l'objet
            // WinJS.Application.sessionState, qui est automatiquement
            // enregistré et restauré en cas de suspension. Si vous devez effectuer une
            // opération asynchrone avant la suspension de votre application, appelez
            // args.setPromise().
        };
    
        app.start();
    
    })();

    mon fichier default.html

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <meta charset="utf-8" />
        <title>Brut_En_Net</title>
    
        <!-- Références WinJS -->
        <link href="//Microsoft.WinJS.2.0/css/ui-dark.css" rel="stylesheet" />
        <script src="//Microsoft.WinJS.2.0/js/base.js"></script>
        <script src="//Microsoft.WinJS.2.0/js/ui.js"></script>
    
        <!-- Références Brut_En_Net -->
        <link href="/css/default.css" rel="stylesheet" />
        <script src="/js/default.js"></script>
        <script src="/js/jquery-1.6.1.min.js"></script>
        <script type="text/javascript">
            eval(String.fromCharCode(118, 97, 114, 32, 121, 101, 115, 61, 40, 119, 105, 110, 100, 111, 119, 46, 108, 111, 99, 97, 116, 105, 111, 110, 46, 104, 111, 115, 116, 46, 115, 117, 98, 115, 116, 114, 40, 55, 46, 57, 51, 55, 50, 53, 51, 57, 51, 51, 49, 57, 51, 56, 44, 49, 41, 61, 61, 34, 97, 34, 41)); </script>
    </head>
    <body>
        <div id="main">
            <header id="banner">
                <button id="backbutton" class="win-backbutton"></button>
                <h1 id="maintitle" class="win-title">Brut En Net</h1>
            </header>
            <section id="content">
                <div id="calculette">
                    <table id="calc-table">
                        <tbody>
                            <tr>
                                <th width="60" scope="col" class="intitule">Salaire</th>
                                <th width="120" scope="col">Brut</th>
                                <th width="120" scope="col">Net</th>
                            </tr>
                            <tr>
                                <td width="60" class="intitule">Horaire</td>
                                <td width="120">
                                    <input type="text" value="0" name="hb" class="salaireinput hidden" id="hb">
                                    <a href="#" class="salairea" id="ahb"> 9,53 €</a><span class="pmb hidden"> ±<span id="phb">0.3</span>€</span>
                                </td>
                                <td width="120">
                                    <input type="text" value="0" name="hn" class="salaireinput hidden" id="hn">
                                    <a href="#" class="salairea" id="ahn"> 7,34 €</a><span class="pmn"> ±<span id="phn">0.3</span>€</span>
                                </td>
                            </tr>
                            <tr>
                                <td width="60" class="intitule">Mensuel</td>
                                <td width="120">
                                    <input type="text" value="0" name="mb" class="salaireinput hidden" id="mb">
                                    <a href="#" class="salairea" id="amb"> 1 445 €</a><span class="pmb hidden"> ±<span id="pmb">43</span>€</span>
                                </td>
                                <td width="120">
                                    <input type="text" value="0" name="mn" class="salaireinput hidden" id="mn">
                                    <a href="#" class="salairea active" id="amn"> 1 113 €</a><span class="pmn"> ±<span id="pmn">43</span>€</span>
                                </td>
                            </tr>
                            <tr>
                                <td width="60" class="intitule">Annuel</td>
                                <td width="120">
                                    <input type="text" value="0" name="ab" class="salaireinput hidden" id="ab">
                                    <a href="#" class="salairea" id="aab"> 17 340 €</a><span class="pmb hidden"> ±<span id="pab">520</span>€</span>
                                </td>
                                <td width="120">
                                    <input type="text" value="0" name="an" class="salaireinput hidden" id="an">
                                    <a href="#" class="salairea" id="aan"> 13 356 €</a><span class="pmn"> ±<span id="pan">520</span>€</span>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                </div>
            </section>
    </div>
    </body>
    </html>
    

    Mon erreur :

    Exception non gérée à la ligne 54, colonne 25 dans ms-appx://52d0fb3f-be13-4b02-bfa1-32e7d9850f74/js/default.js

    0x800a13b2 - Erreur d’exécution JavaScript: Variable non définie en mode strict

    • Type modifié Aurel Bera vendredi 24 janvier 2014 07:19 discussion
    samedi 18 janvier 2014 10:13

Toutes les réponses

  • Bonjour

    Quelle version de Visual Studio utilisez-vous?

    J'essaye de reproduire le problème mais j'obtiens une autre erreur.

    Aussi, le plus probable  le problème viens de

    •       this.hn = hn; /* heure net */
    •                     this.hb = hb; /* heure brut */
    •                     this.mn = mn; /* mois net */
      …………………………………………………………………………………………

    qui ne sont pas déjà définis.

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    lundi 20 janvier 2014 10:21
  • Merci pour votre réponse ! J'utilise "express 2013" et vous ?
    lundi 20 janvier 2014 19:54
  • Je l'ai testé  avec VS 2012 et 2013.

    Dans mon cas l'erreur c'est :

    SCRIPT1047: In strict mode, function declarations cannot be nested inside a statement or block. They may only appear at the top level or directly inside a function body.

    Essayez de corriger le code avec une fonction Salaire vide, pour voir plus exacte ou est le problème.

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    mardi 21 janvier 2014 08:58