Le code ci-dessous fonctionne correctement dans Chrome, mais dans le navigateur IE, je vois l'erreur de console ci-dessous:

l'objet ne prend pas en charge la propriété ou la méthode 'trunc'

Code:

var Days = (new Date(date1) - new Date(date2)) / 50;
if (Math.trunc(Days) > 45)) {
 alert("it should be less than 45 days");
}
0
Dev 25 févr. 2020 à 23:29

3 réponses

Meilleure réponse

Math.trunc n'est pas pris en charge dans IE comme états MDN, veuillez lire ici.

Au lieu de cela, vous pouvez utiliser polifylls:

if (!Math.trunc) {
    Math.trunc = function (v) {
        return v < 0 ? Math.ceil(v) : Math.floor(v);
    };
}

J'espère que cela clarifie.

1
norbitrial 25 févr. 2020 à 20:32

Oui, IE ne prend pas en charge Math.trunc, ni de nombreuses autres fonctionnalités. Voir le MDN navigateur tableau de compatibilité.

Vos options sont de faire la logique que .trunc fait vous-même, ou d'utiliser un polyfill existant. Dans tous les cas, cela ressemblerait à quelque chose comme:

if (!Math.trunc) {
    Math.trunc = function (v) {
        return v < 0 ? Math.ceil(v) : Math.floor(v);
    };
}
0
SpeedOfRound 25 févr. 2020 à 20:33

Il n'est pas intégré au navigateur. Vous pouvez utiliser le polyfill suivant

Math.trunc = Math.trunc || function(x) {
  if (isNaN(x)) {
    return NaN;
  }
  if (x > 0) {
    return Math.floor(x);
  }
  return Math.ceil(x);
};

Mise à jour

Après avoir vu une version beaucoup plus soignée de @norbitrial, cela peut s'exprimer encore plus succinctement comme

Math.trunc = Math.trunc || function(x) {
    return x < 0 ? Math.ceil(x) : Math.floor(x);
}
0
Graham Ritchie 25 févr. 2020 à 20:39