2013-10-31 45 views
1

我有下面的代碼,它將採取一個數組,並附加到頁面動態QR碼與文本是數組中的元素。jQuery每個只返回最後一個元素,谷歌圖表API

$(document).ready(function() { 
      var list = ['dog', 'cat', 'mouse', 'hippo', 'ox']; 
      var qrUrl = 'https://chart.googleapis.com/chart?'; 

      //functions 
      function getQrCodes(array) { 

       $.each(array, function (ix, val) { 
        //options gets chl property redefined for each element 
        //in the array 
        var options = { 
         cht: 'qr', 
         chs: '300x300', 
         chl: array[ix] 
        } 
        qrOptionArray.push(options); 
        console.log('this qr should be: ' + array[ix]); 
        console.log(qrUrl + $.param(options)); 
        var $img = $('img').attr('src', qrUrl + $.param(options)).appendTo('body'); 

       }); 

      } 

      getQrCodes(list); 
     }); 

你可以看到從小提琴here控制檯輸出,雖然由於某些原因,QR碼不會在小提琴窗口出現,他們做我的本地機器上。我得到的問題是最後一個問題,不管你能看到數組中每個元素的控制檯輸出變化,我得到的唯一QR碼是數組中重複X次的最後一個元素。 enter image description here即使控制檯輸出正確,這些QR罐頭中的每一個都會掃描並打印'ox'。這裏發生了什麼?

+1

您正在選擇**所有圖像**,更改來源並將它們移動到身體**,每次迭代**。聽起來像是一個邏輯錯誤,對我來說。這或語法。 –

+1

你的小提琴不起作用,因爲'$('img')'選擇圖像而不是創建它們。一旦我修好了,它似乎工作:http://jsfiddle.net/tHP9v/ –

+0

@KevinB語法:) – wootscootinboogie

回答

1

選擇器,你append圖像到身體是錯誤的。您正在選擇所有現有的img元素,而您要創建一個新元素。試試這個:

var $img = $('<img />').attr('src', qrUrl + $.param(options)).appendTo('body'); 

Example fiddle

注:$('<img />')$('img')

+0

是的,就是這樣。我前幾天做了同樣的事。謝謝,我開始撓頭:) – wootscootinboogie

+0

沒問題,很樂意幫忙。 –

相關問題