2016-02-21 97 views
1

我玩弄MeteorJS和IM試圖使在Template.body.helpers函數搶我的img標籤陣列中的流星JS,body.helper功能的getElementsByTagName

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 
    } 
} 

[]我得到這個opject即我不能訪問

對象從typeof運算

控制檯(k)的返回示出 長度, 項,和 namedItem

但如果我使用控制檯,我可以讓我的兩個圖像,並利用它們,與此不同的代碼......

,這是在瀏覽器中 [對象的HTMLCollection]輸出

所有我想要要做的就是收集我的圖片數組,然後拿到ALT標籤

[] 
0: img.toon 
1: img.toon 
length: 2 
proto: HTMLCollection 

這是我對象從執行console.log(圖像)獲得。但如果我嘗試圖像[0]我得到了一個未定義

感謝您的幫助

所以我增加了一個按鈕,點擊觸發事件,相同的代碼,並讓我的圖像陣列預期...如果我將原始代碼封裝在文檔的onload函數中,它看起來並不運行。

+0

1)你可以編輯你的文章,你不需要在評論中添加信息。 2)請正確縮進您的代碼。 – Tomalak

回答

0

的確,您應該將主代碼放在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; 
    } 

}); 

:您可以使用document.images代替document.getElementsByTagName('img')

+0

謝謝安德烈,我已經看過了關於RenRendered的函數。 – Barrard