Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Meteor js,body.helper函数getElementsByTagName_Javascript_Dom_Meteor - Fatal编程技术网

Javascript Meteor js,body.helper函数getElementsByTagName

Javascript Meteor js,body.helper函数getElementsByTagName,javascript,dom,meteor,Javascript,Dom,Meteor,我正在玩MeteorJS,我正在尝试在Template.body.helpers中创建一个函数,以便在数组中获取我的img标记 if (Meteor.isClient) { Template.body.helpers({ place: function(){ var images = document.getElementsByTagName('img') console.log(images) console.log(typeof images

我正在玩MeteorJS,我正在尝试在Template.body.helpers中创建一个函数,以便在数组中获取我的img标记

if (Meteor.isClient) {
  Template.body.helpers({
    place: function(){

      var images = document.getElementsByTagName('img')
      console.log(images)
      console.log(typeof images)
      for(k in images)
        console.log(k)
      return images
  }
}
[]我得到了这个我无法访问的对象

对象是从typeof返回的

控制台(k)显示 长度, 项目,及 命名主义

但如果我使用控制台,我可以得到我的两个图像,并使用它们,不像这个代码

这是浏览器中的输出 [对象HTMLCollection]

我要做的就是收集数组中的图像,然后获取alt标记

[]
 0: img.toon
 1: img.toon
 length: 2 
proto: HTMLCollection
这是我从console.log(images)获取的对象。但是如果我尝试图像[0],我会得到未定义的图像

谢谢你的帮助


所以我添加了一个带有点击事件的按钮来触发相同的代码,我得到了预期的图像数组。。。如果我将原始代码包装在document onload函数中,它似乎不会运行。

实际上,您应该将主代码放入
Template.body.onRendered
中,因为DOM准备就绪时需要等待

如果您试图收集
alt
属性值,则类似的方法应该有效:

Template.body.onRendered(function() {
  var images = document.getElementsByTagName('img');
  var imagesAlts = [];
  for (var k = 0; k < images.length; k++) {
    imagesAlts.push(images[k].getAttribute('alt'));
  }
  Session.set('imagesAlts', imagesAlts);
  return;
});

Template.body.helpers({

  place: function() {
    var imagesAlts = Session.get('imagesAlts')
    console.log(imagesAlts);
    return imagesAlts;
  }

});
Template.body.onRendered(函数(){
var images=document.getElementsByTagName('img');
var=[];
对于(var k=0;k

注意:您可以使用
document.images
而不是
document.getElementsByTagName('img')

实际上,您应该将主代码放在
Template.body.onRendered
中,因为DOM准备就绪时需要等待

如果您试图收集
alt
属性值,则类似的方法应该有效:

Template.body.onRendered(function() {
  var images = document.getElementsByTagName('img');
  var imagesAlts = [];
  for (var k = 0; k < images.length; k++) {
    imagesAlts.push(images[k].getAttribute('alt'));
  }
  Session.set('imagesAlts', imagesAlts);
  return;
});

Template.body.helpers({

  place: function() {
    var imagesAlts = Session.get('imagesAlts')
    console.log(imagesAlts);
    return imagesAlts;
  }

});
Template.body.onRendered(函数(){
var images=document.getElementsByTagName('img');
var=[];
对于(var k=0;k

注意:您可以使用
document.images
而不是
document.getElementsByTagName('img')

1)您可以编辑您的帖子,不需要在评论中添加信息。2) 请正确缩进您的代码。1)您可以编辑您的帖子,不需要在评论中添加信息。2) 请正确缩进代码。谢谢Andrea,我已经看过onRendered函数了。谢谢Andrea,我已经看过onRendered函数了。