How determine which object/image was clicked using javascript/html -
essentially, have page 100 image thumbnails being displayed in form:
document.getelementbyid('response').innerhtml += "<a href='#'><img src=" + responseobject.items[0].snippet.thumbnails.high.url + " /></a>"; document.getelementbyid('response').innerhtml += "<a href='#'><img src=" + responseobject.items[1].snippet.thumbnails.high.url + " /></a>"; document.getelementbyid('response').innerhtml += "<a href='#'><img src=" + responseobject.items[2].snippet.thumbnails.high.url + " /></a>";
and on. if matters, i'm dealing array of objects made of parsed json. anyway, when user clicks on 1 of images, need call function, showvideo, , need know image item (items[1], items[2]) clicked can pass function , display embedded youtube player item. in rough terms, function might like:
function showvideo(itemclicked){ document.getelementbyid('thevideo').innerhtml = "<iframe width='420' height='345' src=http://www.youtube.com/embed/" + responseobject.items[itemclicked].id.videoid + " /></iframe>" }
i've been reading couple hours, can't seem stumble upon clean way this. ideas? i'd stick javascript keep things simple me now.
you may want use for() loop create each of <a>
:
var responseobject={}; responseobject.items=[ {snippet:{thumbnails:{high:{url:'http://lorempixel.com/50/5'}}}, id:{videoid:`a1213131`}}, {snippet:{thumbnails:{high:{url:'http://lorempixel.com/50/5'}}}, id:{videoid:`b1213131`}}, {snippet:{thumbnails:{high:{url:'http://lorempixel.com/50/5'}}}, id:{videoid:`c1213131`}} ]; (var = 0; < responseobject.items.length; i++) { //create anchor var = document.createelement('a'); //set href property a.href = '#'; //insert thumbnail a.innerhtml = "<img src=" + responseobject.items[i].snippet.thumbnails.high.url + + " />"; //add click event a.addeventlistener('click', function(e) { //prevent act anchor; e.preventdefault(); //insert iframe #thevideo //note if iframe setted up, may better change src property document.queryselector(thevideo>iframe).src=... document.getelementbyid('thevideo').innerhtml = "<iframe width='420' height='345' src=http://www.youtube.com/embed/" + responseobject.items[this].id.videoid + " /></iframe>" + //only snippet example "<p>http://www.youtube.com/embed/" + responseobject.items[this].id.videoid + "</p>"; }.bind(i)); //.bind(i) make our `i` var correspond `this` var of fired event. // append newly created <a> #response div document.getelementbyid('response').appendchild(a); }
<div id="response"></div> <div id="thevideo"></div>
Comments
Post a Comment