答案 0 :(得分:2)
看到这个小提琴: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
}
<a>
(锚点)元素for
循环浏览这些锚点。在每次迭代期间,“当前”锚点通过a[i]
引用。test
检查href
属性不(!
)是否包含“#ytplayer
” Regular Expression 的方法。如果此条件为真(即:href
属性不包含“#ytplayer
”), continue
语句将终止当前迭代,并跳转到下一个锚。innerHTML
属性。 match
方法用于获取视频ID。 Regular expression /\/vi\/([^\/]+)/
表示:匹配等于 /vi/<any consecutive non-slash chars>
的子字符串和组<any consecutive non-slash chars>
。link
变量具有属性1
(一),它保存该组的值。否则,link
等于null
。link
变量不是null
,则会创建匿名 function
(第5-9行)并执行(第9行)。该函数的第一个参数将通过 vidId
(变量)引用。function
分配给当前锚点的onclick
属性。将函数分配给onclick
属性将导致定义 onclick
事件处理程序。player
对象的 loadVideoById
方法(由YouTube javascript API定义)。link[1]
作为第一个参数传递。for
循环和 continue
声明functions
test
RegExp
对象的方法
match
功能与正则表达式innerHTML
属性onclick
事件处理程序loadVideoById