我在主视频容器下面有一些缩略图。我会喜欢当你点击每个缩略图-相关的视频加载并开始播放这里使用新的YOUTUBE API IFRAME方法
感谢您的帮助或指导
PREVIEW ON JSFIDDLE HERE
预览链接更新***
查看此页面:http://jsfiddle.net/Y9j7R/5/
加载时运行以下代码:
var a = document.getElementsByTagName("a"); //1
for(var i=0; i<a.length; i++){ //2
if(!/#ytplayer/.test(a[i].href)) continue; //3
var link = a[i].innerHTML.match(//vi/([^/]+)/); //4
if(link) (function(vidId){ //5
a[i].onclick = function(){ //6
player.loadVideoById(vidId); //7
} //8
})(link[1]); //9
}
代码的详细说明
- 选择文档中所有
for
(锚)元素 - 使用
a[i]
循环遍历这些锚。在每次迭代中,通过href
引用"当前"锚。 - 使用正则表达式的
href
方法检查!
属性是否不 (#ytplayer
)包含"test
"。如果此条件为真(即:#ytplayer
属性不包含"<a>
0"),则innerHTML
语句终止当前迭代,并跳转到下一个锚。 - 请求当前锚的
match
属性。通过//vi/([^/]+)/
方法获取视频id。正则表达式/vi/<any consecutive non-slash chars>
表示:匹配一个等于<any consecutive non-slash chars>
的子字符串,并将link
分组。
当找到这样的子字符串时,1
变量有一个属性link
(1),它保存该组的值。否则,null
=link
。 - 如果
null
变量不是function
,则创建一个匿名的vidId
(第5-9行)并执行(第9行)。函数的第一个参数将通过function
(变量)引用。 - 将新创建的
onclick
分配给当前锚的onclick
属性。将函数赋值给onclick
属性将导致定义loadVideoById
事件处理程序。 - 调用
link[1]
对象的player
方法(由YouTube javascript API定义)。 - ,
- 调用函数(在第5-9行创建),传递
for
作为第一个参数。
-
continue
循环和functions
语句 - 在JavaScript中创建并调用
test
- 正则表达式 (RegExp).
-
RegExp
match
对象的方法
innerHTML
函数与正则表达式结合使用元素的 onclick
属性 loadVideoById
事件处理程序YouTube JavaScript API的 CC_40 方法又一个有趣的答案
- YouTube iframe API:我如何控制iframe播放器's已经在HTML?