2016-10-28 3 views
1

Как управлять несколькими наложениями на разных нажатиях кнопок?

function toggleOverlay_1() { 
 
    var overlay = document.getElementById('overlay'); 
 
    var specialBox = document.getElementById('specialBox_1'); 
 
    overlay.style.opacity = .8; 
 
    if (overlay.style.display == "block") { 
 
    overlay.style.display = "none"; 
 
    specialBox.style.display = "none"; 
 
    } else { 
 
    overlay.style.display = "block"; 
 
    specialBox.style.display = "block"; 
 
    } 
 
} 
 

 
function toggleOverlay_2() { 
 
    var overlay = document.getElementById('overlay'); 
 
    var specialBox = document.getElementById('specialBox_2'); 
 
    overlay.style.opacity = .8; 
 
    if (overlay.style.display == "block") { 
 
    overlay.style.display = "none"; 
 
    specialBox.style.display = "none"; 
 
    } else { 
 
    overlay.style.display = "block"; 
 
    specialBox.style.display = "block"; 
 
    } 
 
}
div#overlay { 
 
    display: none; 
 
    z-index: 2; 
 
    background: #000; 
 
    position: fixed; 
 
    width: 100%; 
 
    height: 100%; 
 
    top: 0px; 
 
    left: 0px; 
 
    text-align: center; 
 
} 
 
div#specialBox_1 { 
 
    display: none; 
 
    position: fixed; 
 
    z-index: 3000; 
 
    height: 100%; 
 
    width: 100%; 
 
    background: #FFF; 
 
    color: #000; 
 
} 
 
div#specialBox_2 { 
 
    display: none; 
 
    position: fixed; 
 
    z-index: 3000; 
 
    height: 100%; 
 
    width: 100%; 
 
    background: #FFF; 
 
    color: #000; 
 
} 
 
div#wrapper { 
 
    position: absolute; 
 
    top: 0px; 
 
    left: 0px; 
 
    padding-left: 24px; 
 
} 
 
.closebtn { 
 
    position: absolute; 
 
    top: 0%; 
 
    right: 45px; 
 
    font-size: 40px; 
 
}
<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script> 
 
<script src="http://a.vimeocdn.com/js/froogaloop2.min.js"></script> 
 
<div id="overlay"> 
 
    <div id="specialBox"> 
 
    <iframe id="myVid_1" src="https://player.vimeo.com/video/183364240?api=1&title=0&byline=0&portrait=0&player_id=myVid_1" width="100%" height="100%" frameborder="0"></iframe> 
 
    <div class="closebtn"> 
 
     <a href="javascript:void(0)" onclick="toggleOverlay_1();">&times;</a> 
 
    </div> 
 
    </div> 
 
</div> 
 

 
<div id="overlay"> 
 
    <div id="specialBox"> 
 
    <iframe id="myVid_2" src="https://player.vimeo.com/video/183364240?api=1&title=0&byline=0&portrait=0&player_id=myVid_2" width="100%" height="100%" frameborder="0"></iframe> 
 
    <div class="closebtn"> 
 
     <a href="javascript:void(0)" onclick="toggleOverlay_2();">&times;</a> 
 
    </div> 
 
    </div> 
 
</div> 
 

 
<div id="wrapper"> 
 
    <input type="button" name="Google_Red" class="button_red" value="Google" a href="#" onclick="toggleOverlay_1()"></input> 
 
    <br> 
 

 
    <input type="button" name="W3Schools Red" class="button_red" value="Sealed Air" a href="#" onclick="toggleOverlay_2()"></input> 
 
    <br> 
 
</div>

Я пытаюсь открыть различные видео (в виде наложения) на различных кнопок мыши. Я мог бы это сделать, если я использую только одну кнопку, и она правильно откроет видео. Но когда я пытаюсь связать разные видео с разными кнопками, он просто связывает одно видео со всеми кнопками. Может ли кто-нибудь сказать мне, как решить эту проблему?

+0

Было бы проще для авторов, если вы сделали код работоспособной, на что-то вроде JSFiddle. – PaulBGD

+1

@PaulBGD я сделал! Благодаря Rick – AAA

ответ

1

На основе вашего HTML и JQuery. Вот что вам нужно сделать. Вместо того, чтобы делать 2 функции. Сохраняйте одну функцию для переключения с идентификатором iframe в качестве параметра toggleOverlay(playerid). Поскольку ваш родительский div вашего видеоизображения iframe является специальным полем, а родитель специального пакета - это сам оверлей. Вы можете использовать метод .parent() jquery для его настройки.

function toggleOverlay(playerid){ 
    $("#" + playerid).parent("#specialBox").parent().css("opacity",".8"); 
    $("#" + playerid).parent("#specialBox").parent().toggle(); 
    $("#" + playerid).parent("#specialBox").toggle(); 
} 

Теперь в кнопках или где вы вызовите функцию toggleOverlay, добавьте уникальный playerid в качестве параметра и ваш набор, на основании которых ручки кнопки, которая оверлей.

Также у вас нет двух одинаковых идентификаторов. Поэтому измените второй идентификатор div overlay на «overlay2».

Здесь работает пример:

http://codepen.io/Nasir_T/pen/pEmEJE

+0

Я попытался автовоспроизвести видео, добавив autoplay = 1 в свой src. Но все видео сохраняются в фоновом режиме, даже если наложение закрыто. Можете ли вы рассказать мне, как это решить? – AAA

+0

Что вы хотите достичь с помощью автовоспроизведения. Обратите внимание, что мы настроили воспроизведение видео и остановились на основе пользовательских потребностей, поэтому, если вы хотите автоматически воспроизводить видео в каком-либо состоянии, вам придется поместить это в код jQuery в нужное место для этого. Параметр запроса автовоспроизведения i не рекомендовал бы, поскольку он запустит видеопроигрыватель сразу после загрузки страницы, даже когда оверлей не отображается. –

+0

. если вы хотите, чтобы видео начало играть сразу после нажатия кнопки наложения наложения, тогда в конце функции toggleOverlay введите следующую строку: $ f ($ ("#" + playerid) [0]). api ('play'); –

0

Поскольку вы нацеливаете на div с идентификатором, DOM возьмет первый div с этим идентификатором (ваше первое видео). Таким образом, вы должны настроить таргетинг своего второго наложения на другой идентификатор.

+1

Так что я должен изменить id = "overlay" на разные ID? – AAA

+0

@SailiG ID всегда должны быть разными. Таким образом, можно было бы «id =» наложить «другой» id = «overlay2» ' –

0

Вот вариант перестройки, я чувствую, что это может быть проще, чем сделать все, что javascript для каждого видео.

// This part isnt needed but I added it in case you wanted it 
 

 
// Get the modals 
 
var modal = document.getElementById('id01'); 
 
var modal2 = document.getElementById('id02'); 
 

 
// When the user clicks anywhere outside of the modal, close it 
 
window.onclick = function(event) { 
 
    if (event.target == modal) { 
 
    modal.style.display = "none"; 
 
    } 
 
    if (event.target == modal2) { 
 
    modal2.style.display = "none"; 
 
    } 
 
}
.modal { 
 
    z-index: 3; 
 
    display: none; 
 
    padding-top: 100px; 
 
    position: fixed; 
 
    left: 0; 
 
    top: 0; 
 
    width: 100%; 
 
    height: 100%; 
 
    overflow: auto; 
 
    background-color: rgb(0, 0, 0); 
 
    background-color: rgba(0, 0, 0, 0.4) 
 
} 
 
.modal-content { 
 
    margin: auto; 
 
    background-color: #fff; 
 
    position: relative; 
 
    padding: 0; 
 
    outline: 0; 
 
    width: 600px 
 
} 
 
.container { 
 
    padding: 0.01em 16px 
 
} 
 
.closebtn { 
 
    text-decoration: none; 
 
    float: right; 
 
    font-size: 30px; 
 
    font-weight: bold; 
 
} 
 
.closebtn:hover, 
 
.closebtn:focus { 
 
    color: red; 
 
    cursor: pointer 
 
}
<button onclick="document.getElementById('id01').style.display='block'">Open Video 1</button> 
 
<button onclick="document.getElementById('id02').style.display='block'">Open Video 2</button> 
 

 
<!-- Video 1 --> 
 
<div id="id01" class="modal"> 
 
    <div class="modal-content"> 
 
    <div class="container"> 
 
     <span onclick="document.getElementById('id01').style.display='none'" class="closebtn">&times;</span> 
 
     <iframe src="https://player.vimeo.com/video/183364240?api=1&title=0&byline=0&portrait=0&player_id=myVid_1" width="100%" height="100%" frameborder="0"></iframe> 
 
    </div> 
 
    </div> 
 
</div> 
 

 
<!-- Video 2 --> 
 
<div id="id02" class="modal"> 
 
    <div class="modal-content"> 
 
    <div class="container"> 
 
     <span onclick="document.getElementById('id02').style.display='none'" class="closebtn">&times;</span> 
 
     <iframe src="https://player.vimeo.com/video/183364240?api=1&title=0&byline=0&portrait=0&player_id=myVid_2" width="100%" height="100%" frameborder="0"></iframe> 
 
    </div> 
 
    </div> 
 
</div>

+0

Спасибо @Rick. Но я хочу использовать vimeo api и сделать функцию кода следующим образом: https://codeshare.io/QgN4P. Мне нужны видео, которые будут воспроизводиться в полноэкранном режиме. Когда я нажимаю на маленькую кнопку «X» справа от наложения видео, я хочу, чтобы наложение было скрыто, а видео было приостановлено, а затем выгружено. – AAA

+0

Я минимизировал часть вашего кода. https://jsfiddle.net/are99tmq/ Существует предварительный просмотр в прямом эфире: http://www.paymaster.net/net3/test/13/ Окружающая среда, в которой вы работаете, не загружает видео, просто ошибка, поэтому дайте мне знать, работает ли скрипт на вашей стороне. –

Смежные вопросы