Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Удаляется не то, что нужно (https://javascript.ru/forum/events/63363-udalyaetsya-ne-chto-nuzhno.html)

semen17 03.06.2016 05:02

Удаляется не то, что нужно
 
Здравствуйте. Сильно прошу не ругать:) Мало что понимаю в js, но все же...
Есть два блока 1-й
<div id="videomp4true">
   <ul id="lightgallery">
	<li>
 <video>
 <source src="URL">
</video>
         </li>
    </ul>
</div>

2-й
<div id="videomp4false">
  <ul id="lightgallery">
    <li>
       <div class="avPlayerWrapper avVideo">
	  <div class="avPlayerContainer">
	      <div id="AVPlayerID_0_d1912219373dcb82890210f3cfb5aa80" class="avPlayerBlock">
			<iframe id="lvideo" src="www.youtube.com" width="400" height="300" title="JoomlaWorks AllVideos Player"></iframe>
              </div>
	 </div>
       </div>
     </li>
  </ul>
</div>

Мне необходимо при выполнении условия удалять тот или иной блок... но у меня в одном варианте условие срабатывает, а в другом нет, вот используемый код:
if (document.getElementsByClassName('jwplayer')) {
   var mpeg = document.getElementById('videomp4false');
mpeg.parentNode.removeChild(mpeg);
} 
if (document.getElementById('lvideo')) {
var youtube = document.getElementById('videomp4true');
youtube.parentNode.removeChild(youtube);
}

рони 03.06.2016 07:59

semen17,
в 1 строке условие всегда сработает, но не факт что не будет ошибки в строке 3 ... проверяют длину списка с одним классом и проверяют наличие элемента перед его удалением.

if (document.getElementsByClassName('jwplayer').length) {
   var mpeg = document.getElementById('videomp4false');
mpeg && mpeg.parentNode.removeChild(mpeg);
}
if (document.getElementById('lvideo')) {
var youtube = document.getElementById('videomp4true');
youtube && youtube.parentNode.removeChild(youtube);
}

semen17 03.06.2016 13:51

Да, все равно не работает, только одно условие выполняется, даже если поменять класс на элемент.
Может подскажите как поступить в данной ситуации?

рони 03.06.2016 14:07

semen17,
можно только гадать, в предоставленном коде даже класса 'jwplayer' нет, как оно у вас в реальности неизвестно.

semen17 03.06.2016 15:17

рони,
Несилен я в описании проблемы..., а ещё, судя по всему, самое главное упустил, да и напутал в представленном коде. Просто голова уже кипит. Знаний мало, а хочется именно так:)
Знал бы как в компоненте k2 joomla прописать условие, при котором выводился блок или нет, не усложнял бы всё так через js и вас не мучил:)
В к2 блок формируется
<div id="videomp4false">
		<ul id="lightgallery">
		    <li class="Videos itemVideo"><?php echo $this->item->video; ?></li>
		</ul>
		</div>

$video формируется
<div class="avPlayerWrapper">
	<div class="avPlayerContainer">
		<div id="<?php echo $output->playerID; ?>" class="avPlayerBlock">
			<?php echo $output->player; ?>
		</div>
	</div>
</div>

$player формируется для:
ютюб
"YouTube" => "<iframe id=\"lvideo\" src=\"//www.youtube.com/embed/{SOURCE}\" width=\"{WIDTH}\" height=\"{HEIGHT}\"  title=\"JoomlaWorks AllVideos Player\"></iframe>"

а если mp4, то
<div id=\"avID_{SOURCEID}\" style=\"width:{WIDTH}px;height:{HEIGHT}px;\" title=\"JoomlaWorks AllVideos Player\"></div>
<script type=\"text/javascript\">
	jwplayer('avID_{SOURCEID}').setup({
		'file': '{SITEURL}/{FOLDER}/{SOURCE}.{FILE_EXT}',
		'image': '{PLAYER_POSTER_FRAME}',
		'height': '{HEIGHT}',
		'width': '{WIDTH}',
		'autostart': '{PLAYER_AUTOPLAY}',
		'repeat': '{PLAYER_LOOP}',
		'controls': '{JWPLAYER_CONTROLS}'
	});
</script>
остальное подгружается через js скрипт библиотеку jwplayer

Просто прописывая в js только одно условие, всё работает, а вот два условия уже нет.

Если вопрос будет решён, готов отблагодарить не только + и кучей слов благодарности, но и материально. Просто эта ситуация меня уже напрягает:\

рони 03.06.2016 15:23

semen17,
ещё вариант
window.addEventListener('DOMContentLoaded', function() {
 if (document.getElementsByClassName('jwplayer').length) {
  var mpeg = document.getElementById('videomp4false');
mpeg && mpeg.parentNode.removeChild(mpeg);
}
if (document.getElementById('lvideo')) {
var youtube = document.getElementById('videomp4true');
youtube && youtube.parentNode.removeChild(youtube);
}
    });


более вариантов нет, php не мой профиль.

semen17 03.06.2016 15:48

рони,
Этот вариант я уже пробывал:) К сожалению он не срабатывает. Но всё равно спасибо. Буду искать дальше решение. И спасибо за потраченное на меня время.

рони 03.06.2016 17:50

semen17,
в консоли запустите код из поста 2, если сработает сделайте через window.setTimeout, лучше бы конечно на сервере это сделать.

semen17 03.06.2016 18:39

рони,
В консоли всё сработало как надо, попробую через window.setTimeout, если разберусь в синтаксисе:)

рони 03.06.2016 18:45

semen17,
window.setTimeout(function() {
 if (document.getElementsByClassName('jwplayer').length) {
  var mpeg = document.getElementById('videomp4false');
mpeg && mpeg.parentNode.removeChild(mpeg);
}
if (document.getElementById('lvideo')) {
var youtube = document.getElementById('videomp4true');
youtube && youtube.parentNode.removeChild(youtube);
}
    },2000);


Часовой пояс GMT +3, время: 13:52.