2013-03-17 87 views
2

这里是JavaScript停止视频:如何从隐藏DIV打

function unhide(divID) { 
    var item = document.getElementById(divID); 
    if (item) { 
     item.className=(item.className=='hidden')?'unhidden':'hidden'; 
    } 
} 

下面是HTML:

<a href="javascript:unhide('verizon');">VERIZON<br> 
<a href="javascript:unhide('sap');">SAP</a><br> 

<div id="sap" class="hidden"> 
    <embed src="videos/sap.mov" height="270" width="480" scale="tofit"></embed> 
</div> 
<div id="verizon" class="hidden"> 
    <embed src="videos/verizon.mov" height="270" width="480" scale="tofit"></embed> 
</div> 

当我在SAP点击播放视频。当我点击Verizon时,它也会播放,但即使它隐藏,SAP视频也会继续播放。

我对JavaScript很陌生。

有没有更好的方法来做到这一点?如何解决我已有的代码?

+0

确保您标记出适当的答案。它使人们更愿意回答你未来的问题。 – Preston 2013-03-19 00:47:21

回答

0

你可以做这样的事情:

function unhide(divID) { 
var item = document.getElementById(divID); 
var other = {"verizon":"sap","sap":"verizon"}; 
if (item) { 
    item.className=(item.className=='hidden')?'unhidden':'hidden'; 
    var tar = document.getElementById(other[divID]); 
    tar.className = 'hidden'; 
    tar.getElementsByTagName("embed")[0].stopVideo(); 
} 
} 

对方只是一个对象,它可以方便地访问视频的ID被停止。它使用divID中的字符串来获取另一个字符串。

然后,一旦你有了其他元素,你可以遍历它的子元素以找到embed元素。 [0]用于获取第一个匹配元素(您的视频)。然后你可以使用javascript的stopVideo()方法来停止视频。

+0

感谢特拉维斯。我不确定这是否奏效。我可能错误地解释了自己。当我点击SAP视频显示。如果我点击Verizon,Verizon的音频也开始播放。除非我再次单击SAP以“隐藏”它,否则我无法看到Verizon视频。也许这是HTML的问题呢?谢谢你的帮助! – user2180362 2013-03-17 22:09:24

+0

@ user2180362 - 尝试隐藏另一个当你显示当前的一个,我在编辑中显示行:'tar.className ='hidden';' – 2013-03-17 22:15:45

0

我的首选解决方案是将该div的HTML设置为null,而不是尝试操纵其中的内容以使其闭嘴。毕竟它是隐藏的,所以为什么要把它留在那里。

document.getElementByID('div').innerHTML = ""; 

因此完全删除那里的任何东西。

而要取消隐藏它(请注意您可能有这个有点坐立不安获得报价的行为)

document.getElementByID('div').innerHTML = '<embed src="videos/sap.mov" height="270" width="480" scale="tofit"></embed>'; 

我认为闪存或类似视频播放机的重元素,这将是一个更好的解决方案,想象一个包含其中30个隐藏的页面,它会变得非常困难。