javascript-函数forEach this.get

javascript-函数forEach this.get,javascript,Javascript,我在jquery中做了这个,效果很好, 但是我需要用纯javascript编写它。 下面的代码不起作用,我不明白为什么… 我不是javascript方面的专家 function playVideo() { var popo = document.getElementsByTagName("object"); popo.forEach(function(index){ var obj = this.get(0); obj.playVideo

我在jquery中做了这个,效果很好,
但是我需要用纯javascript编写它。

下面的代码不起作用,我不明白为什么…
我不是javascript方面的专家

function playVideo() {
    var popo = document.getElementsByTagName("object");
    popo.forEach(function(index){ 
          var obj = this.get(0);
          obj.playVideo(); 
    });
}
更新:我将尝试在jquery版本中发布我的工作

function pauseVideo() {
    $("object").each(function(index){ 
          obj = $(this).get(0);
          obj.pauseVideo(); 
    });
}

document.getElementsByTagName
返回一个节点列表,尽管它类似于数组,但它没有forEach、some、every等数组方法,因此必须以旧的方式迭代

function playVideo() {
    var popo = document.getElementsByTagName("object");
    for (var i=0; i<popo.length; i++) {
        popo[i].playVideo(); 
    }
}
函数播放视频(){
var popo=document.getElementsByTagName(“对象”);

对于(var i=0;i,因为选择器函数类似于
getElementsByTagName
返回
NodeList
对象,而不是
Array
对象

两个修正:

  • 手动转换为数组:
    yesArray=[].slice.call(noArray)
    这样您就可以
    yesArray.forEach(…
  • forEach
    添加到
    NodeList
    NodeList.prototype.forEach=[].forEach
我喜欢第二个,但有些人认为它不“正确”:

// Somewhere in your lib:
NodeList.prototype.forEach = [].forEach;

// In app code:
var popo = document.getElementsByTagName("object");
popo.forEach(function(index) {
  .. etc
});

也许做
Array.slice.call
[].slice.call
更好一些?我认为这更清楚一点。@jaapz-正确的方法应该是
Array.prototype.slice.call()
数组.slice
是一个函数吗?你可能是说
数组.prototype.slice
,这太难键入了。@adeeo'property'=)我喜欢这样。是的,输入错误,这就是我的意思:)我认为代码的清晰度胜过“输入太多”。对我的代码不起作用…也许我必须发布我的jquery工作jquery?我想知道什么是
get()
正在做,但我怀疑你正在尝试在DOM节点上使用jQuery方法,如果你在使用jQuery,为什么一开始就要这样做?是的,我不确定我明白,什么是
playVideo
pauseVideo
,这些方法是如何链接到普通DOM节点的?你确定它不应该是
$(popo[I]).playVideo();
而那
playVideo
是一个jQuery插件吗?你必须更好地解释这一点。你有一个名为playVideo的函数,它是上面代码中的函数,但是当你执行
obj.playVideo()时,你期望得到什么呢
,您使用该名称有什么函数可以链接到本机DOM节点上。您从哪里获取
元素.playVideo()