質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

270閲覧

jsのオブジェクトでのループ処理

KKsall

総合スコア25

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2022/05/14 05:26

編集2022/05/14 05:27

slider-proをオブジェクトで定義してforEachでループさせたかったのですが、うまくできなく。
レクチャーいただければ幸いです

var hoge = {  key0: "01.jpg", key1: "02.jpg", key3: "03.jpg", }; Object.keys(hoge).forEach((key) => { console.log(key);// キー(key) console.log(hoge[key]);// 値(value) }); //img const elmImg = document.createElement("img"); elmImg.classList.add("sp-image"); elmImg.setAttribute('alt', Object.keys(hoge)); elmImg.src = "img/gallery/01.jpg"; document.querySelector('.sp-slide').appendChild(elmImg); document.querySelector('.sp-thumbnails').appendChild(elmImg); //pタグキャプション document.querySelector('.sp-slide').insertAdjacentHTML('beforeend','<p class="sp-layer sp-black sp-padding" data-position="bottomLeft" data-vertical="0" data-width="100%" data-show-transition="up">hogeのkey0、key1</p>');

再現したいHTML

<div class="slider-pro"> <div class="sp-slides"> <div class="sp-slide"> <img class="sp-image" src="img/gallery/01.jpg" alt="key0"> <p class="sp-layer sp-black sp-padding" data-position="bottomLeft" data-vertical="0" data-width="100%" data-show-transition="up">key0</p> </div> <div class="sp-slide"> <img class="sp-image" src="img/gallery/02.jpg" alt="key1"> <p class="sp-layer sp-black sp-padding" data-position="bottomLeft" data-vertical="0" data-width="100%" data-show-transition="up">key1</p> </div> </div> <div class="sp-thumbnails"> <img class="sp-thumbnail" src="img/gallery/01.jpg" alt="key0"> <img class="sp-thumbnail" src="img/gallery/02.jpg" alt="key0"> </div> </div>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

int32_t

2022/05/14 09:54

> うまくできなく。 「うまくできない」「うまく動かない」は技術的質問では禁句です。 どういう結果を期待していて、実際はどうなってしまうのか、具体的にかいてください。
guest

回答1

0

ベストアンサー

おそらくやりたいことはこういうことじゃないかなと想定して回答させていただきます。
参考になれば幸いです。

js

1var hoge = { 2 key0: "01.jpg", 3 key1: "02.jpg", 4 key3: "03.jpg", 5}; 6 7let elmDiv; 8let elmImg; 9let elmThumb; 10 11Object.keys(hoge).forEach((key) => { 12 console.log(key);// キー(key) 13 console.log(hoge[key]);// 値(value) 14 15 elmDiv = document.createElement("div"); 16 elmDiv.classList.add("sp-slide"); 17 18 //img 19 elmImg = document.createElement("img"); 20 elmImg.classList.add("sp-image"); 21 elmImg.setAttribute('alt', hoge[key]); 22 elmImg.src = hoge[key]; 23 24 elmDiv.appendChild(elmImg); 25 26 //pタグキャプション 27 elmDiv.insertAdjacentHTML('beforeend','<p class="sp-layer sp-black sp-padding" data-position="bottomLeft" data-vertical="0" data-width="100%" data-show-transition="up">hogeのkey0、key1</p>'); 28 29 document.querySelector('.sp-slides').appendChild(elmDiv); 30 31 elmThumb = document.createElement("img"); 32 elmThumb.classList.add("sp-thumbnail"); 33 elmThumb.setAttribute('alt', hoge[key]); 34 elmThumb.src = hoge[key]; 35 36 document.querySelector('.sp-thumbnails').appendChild(elmThumb); 37});

html

1<div class="slider-pro"> 2 <div class="sp-slides"> 3 </div> 4 5 <div class="sp-thumbnails"> 6 </div> 7</div>

投稿2022/05/14 14:33

koji

総合スコア111

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KKsall

2022/05/15 18:20

かなりの情報不足の中想定して頂きありがとうございます。 投稿頂いた通りです。 一点ご質問ですが、以下のpタグのテキスト部分も「hogeのkey0、key1」ではなく、オブジェクトhogeの「key0」「key1」と画像に対応してるテキストを入れたいのですが、変数定義して取得すればいけるのでしょか? elmDiv.insertAdjacentHTML('beforeend','<p class="sp-layer sp-black sp-padding" data-position="bottomLeft" data-vertical="0" data-width="100%" data-show-transition="up">hogeのkey0、key1</p>');
koji

2022/05/16 01:19

そうですね、変数を定義すれば可能です。 elmDiv.insertAdjacentHTML('beforeend',`<p class="sp-layer sp-black sp-padding" data-position="bottomLeft" data-vertical="0" data-width="100%" data-show-transition="up">${hoge[key]}</p>`);
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問