2016-08-19 202 views
1

JavaScript超级新手,我无法在任何地方找到任何解决方案。我不知道如果这个问题是则firstChild,或.pause()用firstChild暂停视频?

的 “tabcontent [I] .firstChild.pause()” 行打破了整个功能...

这里有一个JSFiddle与受影响的代码,但没有图像/视频,因为他们仍然是本地的。

而这里的影响的代码在这里:

HTML:

<div class="video-portfolio"> 
     <div class="video-nav-contain"> 
      <ul class="video-nav"> 
       <li id="hide1"> 
        <a href="#" class="tablinks" onclick="openVideo(event, 'garageBar')"> 
         <img class="tab-icon" src="images/garage-bar-tab.png" onClick="videoDisplay1"> 
        </a> 
       </li> 
       <li id="hide2"> 
        <a href="#" class="tablinks" onclick="openVideo(event, 'murryLake')"> 
         <img class="tab-icon" src="images/murry-lake-tab.png"> 
        </a> 
       </li> 
       <li id="hide3"> 
        <a href="#" class="tablinks" onclick="openVideo(event, 'roofFun')"> 
         <img class="tab-icon" src="images/roof-fun-tab.png"> 
        </a> 
       </li> 
      </ul> 
     </div> 
     <div id="garageBar" class="tabcontent" id="videoName"> 
      <video class="vid-tabs" controls> 
       <source src="images/garage%20bar.mp4" type="video/mp4"> 
      </video> 
     </div> 
     <div id="murryLake" class="tabcontent"> 
      <video class="vid-tabs" controls> 
       <source src="images/murry%20lake2.mp4" type="video/mp4"> 
      </video> 
     </div> 
     <div id="roofFun" class="tabcontent"> 
      <video class="vid-tabs" controls> 
       <source src="images/rooftop%20fun.mp4" type="video/mp4"> 
      </video> 
     </div> 
    </div> 

然后JavaScript的:

function openVideo(evt, videoName) { 
var i, tabcontent, tablinks; 
tabcontent = document.getElementsByClassName("tabcontent"); 
for (i = 0; i < tabcontent.length; i++) { 
    tabcontent[i].style.display = "none"; 
    tabcontent[i].firstChild.pause() 
} 
tablinks = document.getElementsByClassName("tablinks"); 
for (i = 0; i < tablinks.length; i++) { 
    tablinks[i].className = tablinks[i].className.replace(" active", ""); 
} 
document.getElementById(videoName).style.display = "block"; 
evt.currentTarget.className += " active"; 
} 

回答

2

的问题是不是与pause()firstChild。视频元素将成为第二个孩子。 firstChild使输出#text

使用childNodes[1]访问老二即视频

tabcontent[i].childNodes[1].pause(); 

JS

<script> 
    function openVideo(evt, videoName) { 
    var i, tabcontent, tablinks; 
    tabcontent = document.getElementsByClassName("tabcontent"); 
    for (i = 0; i < tabcontent.length; i++) { 
     tabcontent[i].style.display = "none"; 
     console.log(tabcontent[i].childNodes[1]); 
    tabcontent[i].childNodes[1].pause(); 
    } 
    tablinks = document.getElementsByClassName("tablinks"); 
    for (i = 0; i < tablinks.length; i++) { 
     tablinks[i].className = tablinks[i].className.replace(" active", ""); 
    } 
    document.getElementById(videoName).style.display = "block"; 
    evt.currentTarget.className += " active"; 
} 
    </script> 

JSFIDDLE