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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

4回答

377閲覧

JavaScriptを用いて高さを取得・設定

morfonica

総合スコア33

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2022/08/09 00:36

実現したいこと

背景に設定したimgタグで設定した画像の高さをと対象箇所の高さを常に同じになるようにJSで設定したいです。

該当のソースコード

PHP

1foreach($array as $value){ 2 <div> 3 <img id="js-autoHeightBase" src="hoge.png"> 4 <div class="js-autoHeightTarget"></div> 5 </div> 6}

JavaScript

1function auto_config_height() { 2 let base = $("#js-autoHeightBase").height(); 3 console.log(base); 4 let target = document.getElementsByClassName("js-autoHeightTarget"); 5 for(let i = 0; i < target.length; i++){ 6 target[i].style.height = base + 'px'; 7 } 8 9 // $(".js-autoHeightTarget").css('height', base); 10 // $(".js-autoHeightTarget").height(base); 11 // document.getElementsByClassName("js-autoHeightTarget")[0].style.height = base + 'px'; 12 13 // target[0].style.height = base + 'px'; 14 15 16 // debug = $(target).height(); 17 // console.log(target); 18 19 // console.log(debug);tyle.height = wh + "px"; 20}; 21 22$(function() { 23 window.addEventListener("load", auto_config_height, false); 24 window.addEventListener("resize", auto_config_height, false); 25})

試したこと

基準にしてほしい高さはしっかり取得できておりますが、設定することに苦戦しております。
javascriptに加えjqueryを用いて試みておりますが、エラーメッセージも出ません。

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

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

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

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

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

yambejp

2022/08/09 00:42

質問がブレるのでjsの質問にphpは入れ込まないほうがよいでしょう imgもどこかサンプル画像サイトからちゃんと表示されるものを用意しないと 再現性がなく回答がしづらいです
m.ts10806

2022/08/09 00:51

CSSがないと再現できないかと思います。 style.heightを取っている時点で、CSSの値を見に行きます。 あと「うまくいかない」では情報量ゼロなので、どのような想定をしていて何が起きているのが具体的に記載してください。 質問は編集できますので、適宜加筆修正してください。
guest

回答4

0

PHP側の処理、おなじIDで複数のimgを吐き出しているので破綻しています

sample

javascript

1<style> 2.js-autoHeightTarget{ 3 background-Color:gray; 4} 5</style> 6<script> 7window.addEventListener('DOMContentLoaded', ()=>{ 8 document.querySelectorAll('.js-autoHeightBase').forEach(x=>{ 9 const sib=x.nextElementSibling; 10 sib.style.height=x.height+"px"; 11 sib.style.width=x.width+"px"; 12 }); 13}); 14</script> 15<div> 16<img class="js-autoHeightBase" src="https://placehold.jp/ff0000/00000/150x100.png?text=1"> 17<div class="js-autoHeightTarget"></div> 18</div> 19 20<div> 21<img class="js-autoHeightBase" src="https://placehold.jp/00ff00/00000/80x120.png?text=2"> 22<div class="js-autoHeightTarget"></div> 23</div>

投稿2022/08/09 00:40

編集2022/08/09 00:53
yambejp

総合スコア114843

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

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

morfonica

2022/08/09 00:44

申し訳ございません! classに変更いたしました。 取得するところまでは問題がないことを確認いたしましたが、 設定が変わらずうまくいきません。
yambejp

2022/08/09 00:53

sample追記しました。こういうことでしょうか?
morfonica

2022/08/09 01:02

ありがとうございます! 試してみます!
guest

0

自己解決

申し訳ございません。
時間をおいて再度確認した際に質問の際に記述したコードでうまく動作いたしました。

投稿2022/08/18 04:03

morfonica

総合スコア33

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

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

0

$(function() {});に囲まれている影響でinitイベントが(もう過ぎてるので)補足できていないからでは?
コードを適当な画像作って試してみた感じresizeしたら高さ取れたけど。

投稿2022/08/09 01:08

編集2022/08/09 01:08
RiaFeed

総合スコア2701

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

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

0

id="js-autoHeightBase"class="js-autoHeightBase"ではないですか?

投稿2022/08/09 00:42

Lhankor_Mhy

総合スコア36115

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

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

Lhankor_Mhy

2022/08/09 00:43

あー、すみません、勘違いでした。
morfonica

2022/08/09 00:44

申し訳ございません! classに変更いたしました。 取得するところまでは問題がないことを確認いたしましたが、 設定が変わらずうまくいきません。
Lhankor_Mhy

2022/08/09 00:53

「うまくいかない」というのがどのような現象なのかわからないですが、jQueryなら外側の div を each で回して、コンテキストを使って要素を指定する、というのが定番のように思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問