IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

xyz.innerHTML me renvoie NaN


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Opérateur PAO
    Inscrit en
    Janvier 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Opérateur PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2013
    Messages : 2
    Par défaut xyz.innerHTML me renvoie NaN
    Bonjour !
    Je me suis confectionné un simple lecteur audio. Les boutons Play/Pause/Stop fonctionnent très bien. C'est sur l'affichage de la durée de la piste que j'ai un problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    /* Ma piste audio est dans une balise audio mytrack */
    var mytrack = document.getElementById('mytrack');
     
    /* La durée de la piste devrait s'afficher dans un span fullDuration */
    var duration = document.getElementById('fullDuration');
     
    /* Pour afficher la durée de la piste */
    duration.innerHTML = mytrack.duration;
    Sur ma page, ce script me renvoie "NaN" ;

    Nom : lecteur-00.png
Affichages : 87
Taille : 3,4 Ko

    pourtant quand je lance dans un console, cela m'affiche bien la durée de la piste en millisecondes.

    Nom : Screenshot_20190918_172906.png
Affichages : 78
Taille : 12,4 Ko
    Nom : lecteur-01.png
Affichages : 94
Taille : 4,2 Ko


    Alors si quelqu'un peut m'expliquer pourquoi la durée ne s'affiche pas sur la page.
    Merci pour votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    A quel moment le script est il lancé ?
    l'élément n'est pas instancié
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Opérateur PAO
    Inscrit en
    Janvier 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Opérateur PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2013
    Messages : 2
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    A quel moment le script est il lancé ?
    l'élément n'est pas instancié
    Sur cette remarque j'ai modifié mon script comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var mytrack = document.getElementById('mytrack');
    var duration = document.getElementById('fullDuration');
     
    // Ici j'ai créé une fonction
    function printDuration(){
    duration.innerHTML = mytrack.duration;
    }
     
    // J'appelle la fonction avec un window.onload
    window.onload = printDuration;
    Et cela marche nickel, merci à SpaceFrog pour la piste.

    PS : S'il y a une autre façon de faire je suis preneur.

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // J'appelle la fonction avec un window.onload
    window.onload = printDuration;
    Et cela marche nickel, merci à SpaceFrog pour la piste.

    PS : S'il y a une autre façon de faire je suis preneur.
    l’inconvénient de cette méthode est qu'elle écrase (supprime), toutes celles déclarées avant, cela peut poser problème.

    Il existe, pour « faire propre »
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Initialisation après chargement du DOM
    document.addEventListener("DOMContentLoaded", function() {
        // ici le code à lancer après chargement de la page
    });
    Dans ton cas cela donnerait, pour faire simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // Initialisation après chargement du DOM
    document.addEventListener("DOMContentLoaded", function() {
        // ici le code à lancer après chargement de la page
        printDuration();
    });

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut


    mdn duration : HTMLMediaElement.duration

    myDuration = htmlMediaElement.duration
    Citation Envoyé par mdn
    A double-precision floating-point value indicating the duration of the media in seconds. If no media data is available, the value NaN is returned. If the element's media doesn't have a known duration—such as for live media streams—the value of duration is +Infinity.
    Citation Envoyé par traduction Google
    Valeur à virgule flottante en double précision indiquant la durée du support en secondes. Si aucune donnée multimédia n'est disponible, la valeur NaN est renvoyée. Si le média de l'élément n'a pas de durée connue, comme pour les flux de média en direct, la valeur de la durée est + Infinity.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Jointure qui ne renvoie pas tous les enregistrements
    Par rayonx dans le forum Langage SQL
    Réponses: 12
    Dernier message: 19/07/2024, 09h33
  2. GDB me renvoie -nan(0X4000)
    Par TheDrev dans le forum C
    Réponses: 3
    Dernier message: 05/10/2008, 21h35
  3. Réponses: 5
    Dernier message: 11/12/2003, 14h45
  4. Procédure stocké:Insert et renvoie de la clé primair
    Par caramel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 17/04/2003, 09h34
  5. sum(XPATH) retourne NaN
    Par TOM-Z dans le forum XMLRAD
    Réponses: 4
    Dernier message: 19/03/2003, 13h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo