2
votes

Vérifier si un élément HTML est un élément multimédia HTML

Je construis une fonction d'assistance pour insérer des éléments dans le DOM. Voici ce que j'ai jusqu'à présent:

if (elem is an html media element) {
   elem.src = media url;
}

Je voudrais pouvoir vérifier si "elem" est un élément multimédia HTML pour pouvoir ajouter un argument ("elemSrc") à ma fonction .

Pseudo-code:

function insertElem(numberOfElems, elemTag, elemId, elemClass, parentSelector){
/*
* numberOfElements:-    Pass in a plain whole integer.
* elemId:-              Pass in a name for the element id (inside "" or ''),
                        an integer is appended to the id name by the for loop.               
* elemTag:-             Pass in the element tag type (inside "" or '').                   
* parentSelector:-      Pass in the identifier of the parent element (inside "" or '')
                        *querySelector prefixes:    # = id
                                                    . = class
                                                    none = tag               
*/      
  if (numberOfElems > 1) {
    for (i = 0; i < numberOfElems; i++) {
      var elem = this[elemId + i];
      elem = document.createElement(elemTag);
      elem.id = elemId + '_' + i;
      elem.className = elemClass;
      parentEl = document.querySelector(parentSelector);
      parentEl.appendChild(elem);
    }
  } else {
    var elem = this[elemId];
    elem = document.createElement(elemTag);
    elem.id = elemId;
    elem.className = elemClass;
    parentEl = document.querySelector(parentSelector);
    parentEl.appendChild(elem);
  }
}


1 commentaires

Pourquoi ne pas avoir simplement un objet de propriétés à définir et à boucler dessus?


3 Réponses :


4
votes

Vous pouvez simplement utiliser instanceof pour voir s'il s'agit d'un HTMLMediaElement

p>

<video id="test1"></video>
<div id="test2"></video>
console.log(document.getElementById('test1') instanceof HTMLMediaElement)
console.log(document.getElementById('test2') instanceof HTMLMediaElement)


1 commentaires

Salut Dave, cela semble faire l'affaire. J'essaierai cela quand j'aurai l'occasion et donnerai des commentaires quand je l'aurai fait! Ta!



0
votes

Suite à la réponse de Dave ci-dessus, HTMLMediaElement est la classe de base pour HTMLAudioElement et HTMLVideoElement donc si vous voulez vérifier un type spécifique des médias, vous pouvez également le faire en utilisant instanceof les types mentionnés respectifs.


0 commentaires

0
votes

Merci pour le conseil Dave, ceci fait ce que je veux pour le moment: -

function insertElem(numberOfElems, elemTag, elemId, elemClass, parentSelector, elemSrc){
    /*
    * numberOfElements:-    Pass in a whole integer.
    * elemTag:-             Pass in the element tag type (inside "" or '').              
    * elemId:-              Pass in a name for the element id (inside "" or ''),
                            an integer is appended to the id name by the for loop.
    * elemClass:-           Pass in a name for element class (inside "" or '').
    * parentSelector:-      Pass in the identifier of the parent element (inside "" or '')
                            * querySelector prefixes:    # = id
                                                         . = class
                                                         none = tag 
    *elemSrc:-              Pass in the source media url (inside "" or ''). 
    */      
      if (numberOfElems > 1) {
        for (i = 0; i < numberOfElems; i++) {
          var elem = this[elemId + i];
          elem = document.createElement(elemTag);
          elem.id = elemId + '_' + i;
             if (elemClass) {
                elem.className = elemClass;
             }
          parentEl = document.querySelector(parentSelector);
          parentEl.appendChild(elem);
            if(elem instanceof HTMLMediaElement) {
                elem.src = elemSrc;
            }
        }
      } else {
        var elem = this[elemId];
        elem = document.createElement(elemTag);
        elem.id = elemId;
            if (elemClass) {
                elem.className = elemClass;
            }
        parentEl = document.querySelector(parentSelector);
        parentEl.appendChild(elem);
           if(elem instanceof HTMLMediaElement) {
                elem.src = elemSrc;
          }
      }
    }


0 commentaires