为什么这样做
var v = document.getElementsByTagName("video")[0];
v.play();
这个
$("#movie").play();
或者
$("video").play();
不? (假设页面上只有一个视频元素)
答案 0 :(得分:3)
因为当你在jQuery选择的对象上使用.play()
时,你最终会在该对象上调用该函数,实际上它不是真正的DOM节点,而是包含在jQuery对象中的DOM节点的集合。而且这个对象根本不知道任何游戏功能。
事实上,当选择器没有命中任何东西时,jQuery对象甚至可以为空,对该包的所有调用仍然有效,但由于没有目标,它不会有任何影响。
如果以类似方式(var v = document.getElementsByTagName("video")[0];
)调用该数据包,并且内部至少有一个DOM节点,则会获得一个真正的DOM节点作为返回对象。此节点知道.play()
函数。
答案 1 :(得分:0)
有两个问题。页面上可能没有id为“video”的元素,因此第一个jQuery语句没有返回任何内容。第二个语句的问题是它返回一个没有play()方法的数组。
第二个问题是jQuery返回一个jQuery对象,你必须让底层DOM元素能够调用“本机”方法。
所以你可能正在寻找这样的东西:
$("viedeo")[0].play ():
这将在返回的第一个DOM元素上调用play()方法。