2017-04-07 35 views
0

我有下面的代碼,經過我的行和列將圖片添加到表中給出的鏈接

  for (var j=0; j < cols; j++) { 
      for (var k=0; k < cols; k++) { 
       alert(data[j][i]) 
       if(data[j][i].endsWith(".jpg")) 
       { 
       var img = document.createElement('img'); 
       img.src = data[j][i]; 
       img.onload = function() { //check to make sure that the 
        tableData += '<td>' + img + '</td>'; 
       }; 
       } 
       else 
       { 
       tableData += '<td>'+data[j][i]+'</td>'; 
       } 
       break; 
      } 
      } 

我想創建圖像,但沒有在這個位置彈出。任何想法我可能做錯了什麼?我也試了一下沒有.onload這個彈出[對象HTMLImageElement]

+0

有關該代碼的幾件事情沒有意義。什麼是'tableData'? 將對'img'元素的引用連接到'tableData'字符串是沒有意義的。而'.onload'函數會在*稍後*運行,在圖像加載後,您的代碼不會停止並等待它。 – nnnnnn

+0

解決了謝謝 –

回答

2
  • 變量img保持對象,而不是HTML字符串。改爲使用<img>標記作爲string
  • 另請注意,onload事件是異步的,回調可以稍後調用!
for (var j = 0; j < cols; j++) { 
    for (var k = 0; k < cols; k++) { 
    alert(data[j][i]) 
    if (data[j][i].endsWith(".jpg")) { 
     var img = '<img src="' + data[j][i] + '">'; 
     tableData += '<td>' + img + '</td>'; 
    } else { 
     tableData += '<td>' + data[j][i] + '</td>'; 
    } 
    break; 
    } 
} 
+1

這正確的謝謝你! –

0

你在你的第二個迭代循環,但k您呼叫data[j][i]。我猜你需要調用

data[j][k] 

如果通過列第一循環週期的第二循環應該通過行,除非行和列是相等的。

for (var k=0; k < rows; k++) {