HTMLとCSSとJavaScriptを使用して、ショッピングサイトのように画像とその説明(商品名や価格)を一覧で表示したいのですが、思ったように表示されず困っております。
下記はHTMLだけで作成した時のウェブページなのですが、
これと同じ見せ方で、今回はJavaScriptを使用する方法を探しています。
![
また、画像の場所とそのデータはJavascriptを用いて配列を使う方法で進めたいと考えています。
JavaScript
1var images = [ 2 { 3 num: 1, 4 src: "images/matcha1_ura.JPG", 5 url: "GreenTea", 6 category: "matcha", 7 info: "Matcha for Urasenke", 8 price: 85 9 }, 10 { 11 num: 2, 12 src: "images/matcha2_omote.JPG", 13 url: "GreenTea", 14 category: "matcha", 15 info: "Matcha for Omotesenke", 16 price: 85 17 }, 18 { 19 num: 3, 20 url: "images/matcha3_mushanokouji.JPG", 21 alt: "GreenTea", 22 category: "matcha", 23 info: "Matcha for Mushanokouji", 24 price: 70 25 }, 26 { 27 num: 4, 28 url: "images/matcha4_oribe.JPG", 29 alt: "GreenTea", 30 category: "matcha", 31 info: "Matcha for Oribe", 32 price: 70 33 } 34// 一部省略 35];
上記の要素を画面上に表示するために下記の関数を作りました。
JavaScript
1function callback () { 2 let wrapper = document.getElementsByClassName('contentwrap') 3 showAll(); 4 5function showAll(){ 6 7 let productpic = document.createElement('div'); 8 9 for (var i = 0; i < images.length; i++){ 10 let img = document.createElement('img'); 11 img.src = "<img alt='" + images.alt + "'" + " src='" + images[i].url + "'/>"; 12 img.style = "width: 100%"; 13 14 let detail = document.createElement('h4'); 15 detail.innerHTML = images[i].info; 16 17 let price = document.createElement('p'); 18 price.innerHTML = '$' + images[i].price + '.00'; 19 20 let moreinfo = document.createElement('p'); 21 button.innerHTML = '<a href="#" title="read more">' + "More information" + '</a>'; 22 23 productpic.appendChild(img); 24 productpic.appendChild(detail); 25 productpic.appendChild(price); 26 productpic.appendChild(moreinfo); 27 28 wrapper.appendChild(productpic); 29 } 30} 31}
画像を挿入したい場所のHTMLは下記のように書いています。
HTML
1<div class="contentwrap"> 2 <article class="container"> <!-- start main part--> 3 </article>
CSSもまだ上手に使えないので、ページの見た目もとても悪いのですが、そこはご容赦ください...
初心者のため分からないことがたくさんあり、基本的な関数やDOMしか使えないのですが、ご教示いただけますと幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/10 20:25