TypeError: null не является объектом (оценка> 'e.relatedTarget.nodeName') - PullRequest
0 голосов
/ 14 ноября 2018

Мне нужно получить атрибут data-video-id, и мой код продолжает возвращать ноль, когда я его запрашиваю.

HTML

<script src="https://www.youtube.com/iframe_api"></script>
<script src="js/video.js"></script>

<a data-target="#myModal" data-toggle="modal" data-video-id="VDB65S6rCC0" >
   <div class="btn btn-success"> Open Modal 2</div>
</a>

<a id='video-player-1' href="#my_modal" data-toggle="modal" data-video-id="VDB65S6rCC0">Open Modal 1</a>

video.js

  var tag = document.createElement('script');

  tag.src = "https://www.youtube.com/iframe_api";
  var firstScriptTag = document.getElementsByTagName('script')[0];
  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

  var player;
  function onYouTubeIframeAPIReady() {
    player = new YT.Player('player', {
      height: '390',
      width: '640',
      videoId:  '{{no-video-id}}',
      events: {
      'onReady': onPlayerReady,
      'onStateChange': onPlayerStateChange
    }
                           });
  }


  // 4. The API will call this function when the video player is ready.

  function onPlayerReady(event) {

    $('.open-popup').click(function() {
      event.target.playVideo();
    });

    $('.close-popup').click(function(e) {
      player.stopVideo();
    });

  }

  // 5. The API calls this function when the player's state changes.
  //    The function indicates that when playing a video (state=1),
  //    the player should play for six seconds and then stop.
  var done = false;
  function onPlayerStateChange(event) {
    if(event.data === 0) {           
      $('.close.close-popup').click();
    }
  }
  function stopVideo() {
    player.stopVideo();
  }

 $(function () { 
 onYouTubeIframeAPIReady();
   $('#my_modal').on('show.bs.modal', function(e) {
      var videoId = $(e.relatedTarget).data('video-id');
      var x = new String(videoId);
      player.loadVideoById(x); 
      $("iframe[src^='https://www.youtube.com']").addClass("embed-responsive-item"); 
      alert("BOOM!");
  });

   $('#video-player-1').click(function(e) {
      var bookId = $(e.relatedTarget).data('video-id');
      alert($(e.relatedTarget.nodeName));

      var x = new String(bookId);
      player.loadVideoById(x);

      });
});

ОШИБКА:

При нажатии на кнопку, чтобы открыть модал, соответствующая цель равна нулю.

TypeError: null не является объектом (оценка 'E.relatedTarget.nodeName')

alert(e); возвращает

[объект Объект]

Также $('#my_modal').on('show.bs.modal', function(e) {, похоже, не выполняется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...