我在下面提供了以下代码,并且我试图做到这一点,以便当用户单击他们希望从中观看视频的流媒体网站的文本时,该文本将在iframe中更新。
<iframe src="<!-- Desired URL from a href should be here -->" height="240" width="100%">
<ul class="video-links">
<li><a href="https://our-unique-url-for-this-title.com">YouTube</a></li>
<li><a href="https://our-unique-url-for-this-title.com">Vimeo</a></li>
<li><a href="https://our-unique-url-for-this-title.com">DailyMotion</a></li>
<li><a href="https://our-unique-url-for-this-title.com">Veoh</a></li>
<li><a href="https://our-unique-url-for-this-title.com">Crackle</a></li>
</ul>
我该如何通过仅向我们的<li>
video-links
类中添加更多ul
标签来扩展规模?
答案 0 :(得分:1)
完整的代码:
<iframe id="myiframe" src="" height="240" width="100%"></iframe>
<ul class="video-links">
<li><a href="https://our-unique-url-for-this-title.com" onclick="return changeSrc(this)">YouTube</a></li>
<li><a href="https://our-unique-url-for-this-title.com" onclick="return changeSrc(this)">Vimeo</a></li>
<li><a href="https://our-unique-url-for-this-title.com" onclick="return changeSrc(this)">DailyMotion</a></li>
<li><a href="https://our-unique-url-for-this-title.com" onclick="return changeSrc(this)">Veoh</a></li>
<li><a href="https://our-unique-url-for-this-title.com" onclick="return changeSrc(this)">Crackle</a></li>
</ul>
<script>
function changeSrc(obj)
{
document.getElementById("myiframe").src = obj.href;
return false;
}
</script>
现在介绍一下我对您的代码进行的一些修改:
script
标签中编写JavaScript函数。onclick
是一个回调,当用户单击页面中的某些内容时调用该回调。我们调用changeSrc
函数,将this
作为参数传递,因为我们要传递要单击的对象。return false
,否则页面将跟随href
属性中的链接。有很多替代方法,但是我想通过我的解决方案变得简单。id
分配给您的iframe
,并使其用于管理其属性,例如src
,因此可以对其进行设置。答案 1 :(得分:0)
以下是FonzTech的答案中添加的一些语法糖。
<iframe id="myiframe" src="" height="240" width="100%"></iframe>
<ul class="video-links">
<li data-link="https://our-unique-url-for-this-title.com">YouTube</li>
<li data-link="https://our-unique-url-for-this-title.com">Vimeo</li>
<li data-link="https://our-unique-url-for-this-title.com">DailyMotion</li>
<li data-link="https://our-unique-url-for-this-title.com">Veoh</li>
<li data-link="https://our-unique-url-for-this-title.com">Crackle</li>
</ul>
<script>
// Get a NodeList of all li elements inside .video-links
let elements = document.querySelectorAll('.video-links li')
// Loop through each item in the NodeList
elements.forEach((el) => {
// Add a click event to each item
el.addEventListener('click', () => {
// Scrape the data-link attribute from the current li element
let link = el.attributes['data-link'].value;
// Set the iframe's src attribute
document.getElementById("myiframe").src = link;
});
});
</script>
建议不要使用自定义标记的href属性来存储数据,而建议使用自定义数据属性,因为这是它们的用途。除此之外,您不必阻止浏览器跟踪链接。
此解决方案也不使用内联JS,某些人认为这是“不好”或“混乱”的做法。