Pasando valores de matriz de imagen y cambiando la fuente de la imagen con un clic
De acuerdo, finalmente, el centavo cayó (¡fuerte ruido!) Sobre el problema de clics que tenía aquíAgregue div dinámico solo una vez y un problema de JSFiddle. El código ahora muestra al usuario una selección de fotografías una vez por nodo que se hace clic. Uf.
Sin embargo, ahora miimg.src=e.target.src
La línea tiene problemas para acceder a las otras imágenes de la matriz. Solo la última imagen de la matriz se agregará a la tabla. Creo que esto es porque elallImages.onclick
evento debe estar dentro del bucle?
Lo he intentado y luegoimg
está apareciendo como indefinido. Supongo que es porque el bucle (y por lo tanto la función) se está ejecutando antesvar img
se declara? Creo que es un problema con el orden de las cosas.
Toda la ayuda apreciada.
var makeChart = function () {
var table = document.createElement('table'),
taskName = document.getElementById('taskname').value,
header = document.createElement('th'),
numDays = document.getElementById('days').value, //columns
howOften = document.getElementById('times').value, //rows
row,
r,
col,
c;
var myImages = new Array();
myImages[0] = "http://www.olsug.org/wiki/images/9/95/Tux-small.png";
myImages[1] = "http://a2.twimg.com/profile_images/1139237954/just-logo_normal.png";
for (var i = 0; i < myImages.length; i++) {
var allImages = new Image();
allImages.src = myImages[i];
var my_div = document.createElement("div");
my_div.id = "showPics";
document.body.appendChild(my_div);
var newList = document.createElement("ul");
newList.appendChild(allImages);
my_div = document.getElementById("showPics");
my_div.appendChild(newList);
my_div.style.display = 'none';
}
header.innerHTML = taskName;
table.appendChild(header);
header.innerHTML = taskName;
table.appendChild(header);
function addImage(col) {
var img = new Image();
img.src = "http://cdn.sstatic.net/stackoverflow/img/tag-adobe.png";
col.appendChild(img);
img.onclick = function () {
my_div.style.display = 'block';
allImages.onclick = function (e) { // I THINK THIS IS THE PROBLEM
img.src = e.target.src;
my_div.style.display = 'none';
img.onclick=null;
};
}
}
for (r = 0; r < howOften; r++) {
row = table.insertRow(-1);
for (c = 0; c < numDays; c++) {
col = row.insertCell(-1);
addImage(col);
}
}
document.getElementById('holdTable').appendChild(table);
document.getElementById('createChart').onclick=null;
}