• ベストアンサー

WordPressの質問(q10226736)の続

➀ ---- divTitlePartialParts.classList.add("title-partial"); // classの追加 divTitlePartialParts.classList.add("parts"); // classの追加 ---- ➁ ---- divTitlePartialParts.classList.add("title-partial", "parts"); // classの追加 ---- ➂ ---- divTitlePartialParts.className = "title-partial parts"; // classの追加 ---- divTitlePartialParts.setAttribute("class", "title-partial parts"); // classの追加 ---- 下記のHTML クラスで CSS を書きたいのですが、 ➀➁のクラスを2つ分ける方法と➂のまとめて書く方法どちらを選択すべきでしょうか? 頻繁に書き換える場合 classList を使ったほうが良いとのことでどちらが良いか悩んでおります。 ・title-partial { }

  • PHP
  • 回答数20
  • ありがとう数26

質問者が選んだベストアンサー

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.20

・➀行目はどのようなコードになるのでしょうか? 質問の意味がわかりません。 コメントに書かれている通りのことです。 他のところにもあります。 200行目 for (let i = 0; i < parts.length; i++) { 229行目 for (let i = 0; i < attach.length; i++) { ・➈blobUrl[i]というコードはバイナリファイルをURLにする目的で書かれたものでしょうか? DataURL と BlobURL があるようで何故 BlobURL になったのか知りたいです。 私は覚えていません。 質問者さまが決められたのではなかったですか。 「※DataURIとBlobURLの違い」を見て思いましたが、 Base64を使いたくないとか言われていなかったでしょうか。 そもそもアップロードファイルと同じものです。 411行目 changeImg.src = blobUrl[i];

php_learn
質問者

お礼

こちらが最新の質問になります。 回答が遅れてしまい申し訳ありません、dell_okさんに事前に伝えておくべきでした。 回答の期限が切れてしまった為下記のリンクからアドバイスお願い致します。 https://okwave.jp/qa/q10245849.html

php_learn
質問者

補足

回答ありがとうございます。遅れてしまい申し訳ありません。 Base64を使わずにバイナリーデータを調べる方法をとっていたのを忘れておりました。 結果画面まで作成致します。

その他の回答 (19)

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.19

最新コードを添削してみました。 https://wandbox.org/permlink/9p72McizK12P3f8q コード比較してみて変更点を確認してみてください。 わからないところは聞いてください。

php_learn
質問者

補足

訂正ありがとうございます。ファイルアップロードと画像アイコンについての処理をまとめられているのは理解できました。 386行目から397行目からの新コードについて調べながらコメントアウトで意味を書いてみました。 ➀for (let i = 0; i < blobType.length; i++) { //変数 i = 0,変数 i < MIME タイプ配列.配列の要素の数;変数「i」に値を1追加する ➁ if (i == 3) { //もし変数 i と 3が同じ値なら ➂ usericonImg = document.createElement("img"); //imgタグを生成 ➃ usericonImg.style.maxHeight = "40px"; //要素の最大高を設定 ➄ usericonImg.style.maxWidth = "40px"; //要素の最大幅を設定 ➅ if (blobType[i] == "") { //もし MIME タイプ配列が空だったら ➆ usericonImg.src = "<?php echo $noimage_url; ?>"; //代替え画像を表示する ➇ } else { //アイコン画像がアップロードされていたら ➈ usericonImg.src = blobUrl[i]; //データをURLで表現するための仕組み 変数「i」 ➉ } } else { _________________________ ここから分からない点を書きました。アドバイスお願い致します。 ➀行目はどのようなコードになるのでしょうか? ➁行目は回答No.15で dell_ok さんに頂いた解説とサンプルコード218、219行目から分かりました。 ※回答No.15から抜粋 attach[0] アップロードファイル1 attach[1] アップロードファイル2 attach[2] アップロードファイル3 attach[3] 画像アイコン ※218、219行目から抜粋 const blobType = ["", "", "", ""]; const blobUrl = ["", "", "", ""]; ➈blobUrl[i]というコードはバイナリファイルをURLにする目的で書かれたものでしょうか? DataURL と BlobURL があるようで何故 BlobURL になったのか知りたいです。 ※DataURIとBlobURLの違い https://qiita.com/you8/items/2dd56fad8ead82bfe73d ➀変数i が 0(画像アイコン?)個より少ない場合、バイナリー判定した要素の値に 1 追加する ➁ i == 3 画像アイコンなら ➂ img タグを生成 ➃画像の縦幅を 40px で設定 ➄画像の横幅を 40px で設定 ➅バイナリー判定した要素(アイコン画像)が空だったら ➆代替え画像を表示する ➇アイコン画像がアップロードされていたら ➈アップロードされた画像を表示する ※説明が難しいため各行に番号を振っております。

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.18

・回答者のデザインのみ順番を変更することは可能でしょうか? 回答者のデザインとはなんなのかわかりません。 質問一覧画面ではどのような配置でもかまわないと思います。

php_learn
質問者

お礼

もしアイコン画像がアップされていなければダミー画像を表示、アップされていればそのまま確認画面で表示するという前提でコードを考えてみました。 入力画面で input要素 のファイルの有無を判定して、それぞれ出力したい画像のコードを書くことで確認画面(非同期通信)を行う前に変数としてまとめることが出来て、確認画面でのコードは複雑なものにならないのではないかと思いました。 2つ考えてみたのですが、どちらも知識が浅くコードに間違いがありそうです… こちらの機能とは別にアイコン画像をアップロード時にアバター画像を非表示にする機能も働いておらず、どうすべきか悩んでおります。 アイコン画像のアップロード項目を任意で追加する場合、回答画面で表示できれば良いと想像しているのですが、dell_ok さんならどのような方法で実装しますでしょうか? コードがあまりにも複雑化してしまうのであればアイコン画像の項目の追加は辞める予定です。 ※最新コード https://wandbox.org/permlink/DljyPbmp9iwGYHG0 ※該当ページ https://www.irasuto.cfbx.jp/%e8%b3%aa%e5%95%8f%e6%8e%b2%e7%a4%ba%e6%9d%bf/ ※考えたコード1 <input type="file" class="attachImg" accept=".png, .jpg, .jpeg" onchange="setImage(this);" onclick="this.value = '';"> <img src="<?php echo $noimage_url; ?>" class="usericonImg" style="height: 100px;"> <script> function setImage(target) { var reader = new FileReader(); //インスタンスを生成 reader.onload = function(e) { document.querySelectorAll("usericonImg").setAttribute('src', e.target.result); } reader.readAsDataURL(target.files[0]); //指定したBlob型かFIle型のファイルを読み込む }; fileReader.onload = (function(e) { if ("usericonImg" === null) { //もしアバター画像を選択されていないなら document.write('<img src="image/foge.jpg">'); //ダミー画像を出力 } else { //アップロードの画像を選択されているなら document.querySelectorAll('usericonImg').innerHTML += '<img src="' + e.target.result + '">'; //アップロードされたアイコン画像を設定する } }); </script> ※考えたコード2 <script> const binary = document.querySelectorAll('attachImg'); //クラス名を変えないとファイルアップロードの方にも影響が出るのではないか binary.addEventListener("change", function(evt) { var imagefile = evt.target.files; //選択ファイルを配列形式で取得 if ("changeImg" === null) { //もしアイコン画像が空なら document.write('<img src="image/foge.jpg">'); //ダミー画像を出力 } else { //アイコン画像がアップロードされているなら document.write(changeImg); //変数 changeImg(アップロード画像アイコン)を表示 } }) </script> ※input type="file" の選択判定 https://teratail.com/questions/346307 ※FileReaderを使って画像をプレビュー https://okinawanpizza.hatenablog.com/entry/2020/12/29/120807#google_vignette ※JavaScriptで画像を表示する方法 https://qiita.com/minamikawa1990/items/729e50b6c6c5089721eb

php_learn
質問者

補足

回答ありがとうございます、回答者が見る画面になります。

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.17

・アップロードボタンをダミー画像にするという意味が良く理解できていないのですが、現在のコードとはまた別の方法があるのでしょうか? 別のコードはありません。 質問された選択肢はこうでした。  ➀確認画面でダミー画像を表示して質問者がアイコン画像を付けるかどうか気持ちを確かめる  ➁結果画面までダミー画像を表示させず質問一覧画面で初めて表示する これでは質問画面にはダミー画像が表示されてないように思いますし、あの時点での画面は見ていませんのでどうなっていたか知りませんでした。 なので、質問画面の時からダミー画像を表示しておけばいいと言ったまでです。

php_learn
質問者

補足

回答ありがとうございます、質問画面と確認画面ではダミー画像を表示して、質問一覧ページでアイコン画像を表示させるということですね。 確認画面でif分岐させて画像がアップロードされた場合はそちらを表示、されていない場合はダミー画像を表示させるようにしたいと考えております。 コードが複雑化してしまう場合は質問→確認では表示せずに回答者が見るページで表示させるのがベストではないかと思いました。

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.16

・入力ページは現在の並びで確認ページは上記のようにしたいのですが、不可能でしょうか? 不可能ではありませんが、 投稿者が戸惑うと思うのでおすすめしません。 質問、確認、結果は、すべて同じ並びや配置にすべきだと思います。 順序が入れ替わるページは見たことがありませんし、 メリットもないと思います。 コードの簡略化のためにここまでしてきましたが、 もし順序を入れ替えるのであれば、 画像アイコンは別の名前にした方がいいような気がします。  <input type="file" class="avatar" name="avatar"> 同じ名前のままループ処理でまわすと、 配列のインデックスを気にしなくてはならないので、 わかりにくいコードになるかも知れません。 とは言え、名前を変えるとコード量が2倍になるかも知れません。 そこまでしなくてもいい方法があるかも知れませんが、 よく考える必要がありそうです。

php_learn
質問者

お礼

順番を画像・動画アップロード→メッセージ→タイトル→スタンプ→画像アイコンアップロード→名前に修正いたしました。 ※最新コード https://wandbox.org/permlink/hQPrB6c4Jw7USEZ7

php_learn
質問者

補足

Q.投稿者が戸惑うと思うのでおすすめしません。 質問、確認、結果は、すべて同じ並びや配置にすべきだと思います。 順序が入れ替わるページは見たことがありませんし、 メリットもないと思います。 A.アドバイスありがとうございます。goo質問のデザインを参考に考えたのですが、順序は入れ替えないほうが投稿者には分かりやすそうですね。 画像→メッセージ→タイトル→スタンプ→画像アイコン→名前の順番で質問、確認、結果は統一して、回答者のデザインのみ順番を変更することは可能でしょうか? ________________________________________ 回答No.14の質問画面のアップロードボタンをダミー画像にするという意味が良く理解できていないのですが、現在のコードとはまた別の方法があるのでしょうか? アイコン画像アップロード時にダミー画像を消して表示する機能は維持したまま、確認画面でアップロードされていない場合はダミー画像、アップロードされた場合はその画像を表示させるような機能にしたいと考えております…

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.15

配置はこうではないのですか。 ~~~~ Q 質問する         STEP1入力>STEP2確認>STEP3完了 タイトル                     スタンプ画像 画像アイコン 名前 メッセージ アップロードファイル1  アップロードファイル2  アップロードファイル3 修正するボタン       投稿するボタン ~~~~ 現在の画面を見てみましたが、アップロードファイルが先にあると、順番が変わります。 ==== アップロードファイル1<input type="file" class="attach"> アップロードファイル2<input type="file" class="attach"> アップロードファイル3<input type="file" class="attach"> 画像アイコン<input type="file" class="attach"> ==== 変数attachの中は、上から順に要素が取得されています。 attach[0] アップロードファイル1 attach[1] アップロードファイル2 attach[2] アップロードファイル3 attach[3] 画像アイコン つまり i==0 の判定は i==3 になってきます。

php_learn
質問者

補足

Q.配置はこうではないのですか。 ~~~~ Q 質問する         STEP1入力>STEP2確認>STEP3完了 タイトル                     スタンプ画像 画像アイコン 名前 メッセージ アップロードファイル1  アップロードファイル2  アップロードファイル3 修正するボタン       投稿するボタン ~~~~ A.解説ありがとうございます。 入力ページは現在の並びで確認ページは上記のようにしたいのですが、不可能でしょうか?

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.14

・= の先が何故 height と width になるのか分からないのですが、どこからきているのでしょうか? ここですよ。 ---- if(i == 0){ maxsize = 5; height = "40px"; width = "40px"; }else{ maxsize = 15; height = "350px"; width = "528px"; } ---- ・どちらを選択しますでしょうか? 質問画面のアップロードボタンをダミー画像にしておけばいいと思います。 OKWAVEのプロフィール画像はこんな感じになっています。 アバターっぽい画像とアップロードのようなアイコン。

php_learn
質問者

補足

Q.= の先が何故 height と width になるのか分からないのですが、どこからきているのでしょうか? A.回答ありがとうございます、理解出来ました。 ・どちらを選択しますでしょうか? Q.質問画面のアップロードボタンをダミー画像にしておけばいいと思います。 OKWAVEのプロフィール画像はこんな感じになっています。 アバターっぽい画像とアップロードのようなアイコン。 A.アドバイスありがとうございます、その発想はありませんでした。 OKWAVEのプロフィール画像のように使う場合、確認画面でもアイコン画像を表示させることになると思うのですが、画像がアップロードされた場合とされずにアバターっぽい画像を設定するコードはどのように書くのでしょうか? アバター画像をアップロードしたい方もおられると思い、もしアップロードされなかったらダミー画像を表示させるという仕組みで考えていたのですが、画像を元々設置している為か機能せずどのように書けば良いか分からない状態です…アドバイスお願い致します。 sample.phpの224行目で要素を取得、227行目に画像がない場合にダミー画像を追加するコードを書いております。 ※最新コード https://wandbox.org/permlink/OIloPSML4hzdIeke ※該当ページ https://www.irasuto.cfbx.jp/%e8%b3%aa%e5%95%8f%e6%8e%b2%e7%a4%ba%e6%9d%bf/ ※参考サイト https://mebee.info/2020/11/19/post-17828/

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.13

・イコールの先が分かりません… 下記コードの i を j に変更して使いまわすような形になるのでしょうか? これでもかまわないのですが、条件分岐の処理は何か所にも書かない方がいいです。 条件が変わるたびに直す必要が出てくるからです。 ---- if (j == 0) { child.style.height = "40px"; child.style.width = "40px"; } else { child.style.height = "350px"; child.style.width = "528px"; } ---- なので、maxsizeと同じところでやっておきます。 ---- if(i == 0){ maxsize = 5; height = "40px"; width = "40px"; }else{ maxsize = 15; height = "350px"; width = "528px"; } 省略 child.style.height = height; child.style.width = width; ---- ・アイコン画像がアップロードされていない場合ダミー画像を表示させるものになります。 これは質問画面には関係ないものです。 確認画面、結果画面、出すのであれば質問一覧画面、で処理することです。 なので、処理するタイミングが違いますので、それぞれの場所で必要な処理を入れてください。

php_learn
質問者

補足

Q.これでもかまわないのですが、条件分岐の処理は何か所にも書かない方がいいです。 条件が変わるたびに直す必要が出てくるからです。 ---- child.style.height = height; child.style.width = width; ---- A.アドバイスありがとうございます。画像に関することなのでまとめられるということですね。 = の先が何故 height と width になるのか分からないのですが、どこからきているのでしょうか? Q.これは質問画面には関係ないものです。 確認画面、結果画面、出すのであれば質問一覧画面、で処理することです。 なので、処理するタイミングが違いますので、それぞれの場所で必要な処理を入れてください。 A.解説ありがとうございます。表示タイミングを2パターンで悩んでおります。 結果画面でダミー画像を表示させた場合確認画面に戻ることは出来ない為、質問者にとって良いものではないと思いました。 dell_ok さんならどちらを選択しますでしょうか? ➀確認画面でダミー画像を表示して質問者がアイコン画像を付けるかどうか気持ちを確かめる ➁結果画面までダミー画像を表示させず質問一覧画面で初めて表示する ※最新コード https://wandbox.org/permlink/xLKeUZJczft4ITZS

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.12

・iで判別するということはクラス名は統一するということでしょうか? そうですね。 言った通り、処理に必要なクラスは同じにしておいてください。 ・アイコン画像の表示サイズを40×40で想定している場合 CSS で縮小する方法になるのでしょうか? そうですね。 表示サイズはここで指定しているようなので、ここも変数にしてみてください。 ---- child.style.height = "350px"; child.style.width = "528px"; ---- ・i == 0 はファイルアップロードにも使われているようなので、画像ファイルかファイルアップロードかどうやって判定しているのか分からずお聞きしたいです。 配置の順はこうですよね。 ~~~~ Q 質問する         STEP1入力>STEP2確認>STEP3完了 タイトル                     スタンプ画像 画像アイコン 名前 メッセージ アップロードファイル1  アップロードファイル2  アップロードファイル3 修正するボタン       投稿するボタン ~~~~ そうすると、HTMLはこうなります。 見にくいのでここではアップロードファイルを改行しておきます。 ==== 画像アイコン<input type="file" class="attach"> アップロードファイル1<input type="file" class="attach"> アップロードファイル2<input type="file" class="attach"> アップロードファイル3<input type="file" class="attach"> ==== それで、クラスで取得する処理はこれ、 ---- const attach = document.querySelectorAll('.attach'); ---- 変数attachの中は、上から順に要素が取得されています。 attach[0] 画像アイコン attach[1] アップロードファイル1 attach[2] アップロードファイル2 attach[3] アップロードファイル3 なので、 iが0の時はアイコン画像の処理になり、 iが1以降の時はアップロードファイルの処理になります。

php_learn
質問者

補足

Q.そうですね。 表示サイズはここで指定しているようなので、ここも変数にしてみてください。 ---- child.style.height = "350px"; child.style.width = "528px"; ---- A.アドバイスありがとうございます。変数宣言は let 変数名 = 初期値; だと思うのですが、 イコールの先が分かりません… 下記コードの i を j に変更して使いまわすような形になるのでしょうか? for文では i の次に j が使われているとのことで j にしております。 for (let j = 0; j < attach.length; j++) { attach[j].addEventListener('change', () => { //HTML要素の中身を変更するときに使われるプロパティ if (j == 0) { child.style.height = "40px"; child.style.width = "40px"; } else { child.style.height = "350px"; child.style.width = "528px"; } }); }; ※参考サイト https://jsprimer.net/basic/variables/ Q.変数attachの中は、上から順に要素が取得されています。 attach[0] 画像アイコン attach[1] アップロードファイル1 attach[2] アップロードファイル2 attach[3] アップロードファイル3 なので、 iが0の時はアイコン画像の処理になり、 iが1以降の時はアップロードファイルの処理になります。 A.分かりやすい解説ありがとうございます、HTML に直して考えるのは良いですね。 attach[] で判定しているのが理解できました。 _________________________ 1つ追加したい項目を忘れておりました。アイコン画像がアップロードされていない場合ダミー画像を表示させるものになります。 //画像がない場合にダミー画像表示で追加を考えていたのですが、//アイコン画像とアップロードファイルの分岐処理に加えても良いでしょうか? HTML でも代替画像を表示することが出来るようでどの方法が良いか悩んでおります。 //画像がない場合にダミー画像表示 changeImg.onerror = () => { changeImg.src = 'changeImg.png'; changeImg.removeAttribute('onerror') } //アイコン画像とアップロードファイルの分岐処理      for (let i = 0; i < attach.length; i++) { attach[i].addEventListener('change', () => { //HTML要素の中身を変更するときに使われるプロパティ if (i == 0) { maxsize = 5; } else { maxsize = 15; } }); }; ※Javascript 画像がない場合に代替え画像表示 https://mebee.info/2020/11/19/post-17828/ ※HTML 画像ファイルが見つからない場合に代替画像を表示 https://wdeco.jp/_/view/8

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.11

まずJavaScriptのコードはそのままで、 アイコン画像を追加した画面で動作確認されましたか。 画面の配置が変わったので、 1つ目のファイルがアイコン画像、 2つ目以降のファイルがアップロードファイルになります。 処理に必要なクラスは変更しないでください。 for (let i = 0; i < attach.length; i++) {} この処理はiが0から3の4回繰り返されます。 iが0の時はアイコン画像の処理になり、 iが1以降の時はアップロードファイルの処理になります。 つまり、実行時点の処理が、 アイコン画像なのかアップロードファイルなのかは、 iの値を判定することでわかります。 アイコン画像とアップロードファイルで違う処理をしたい場合はこう書きます。 ---- if(i == 0){  アイコン画像の処理(A) }else{  アップロードファイルの処理(B) } ---- ですが、(A)と(B)の処理のほとんどは同じなのでそのまま使えます。 使えないのはここだけです。 「➀カメラ画像ではなく別の画像を用意する、可能であれば画像サイズは5MBで制限したい」 こちらは、 「➁アイコンは画像のみアップロードを許可」 アイコン画像の属性acceptで完結しているのでいいと思います。 では、画像サイズの処理だけ変更すればいいことがわかりました。 (A)と(B)に5MBか15MBかの数値が違うだけのほとんど同じ膨大なコードを書く必要はありません。 どうにかしたいのはここだけです。 この15を固定で書いているので問題になっています。 ---- if (attach[i].files[0].size > 15 * 1024 * 1024) { alert('ファイルサイズが 15MBバイトを超えています'); return; } ---- なのでここを変数にします。 ---- if(i == 0){ maxsize = 5; }else{ maxsize = 15; } if (attach[i].files[0].size > maxsize * 1024 * 1024) { alert('ファイルサイズが ' + maxsize + 'MBバイトを超えています'); return; } ---- これで(A)(B)は膨大なコードにならずにすんで、 それ以降の処理はそのまま使えるようになります。 ただ、画面の配置をまた変えたりして、順番が変わると手直しが必要になってきます。 なので、名前などの文字数で使っているdata属性を使うのもいいかも知れません。 ---- <input type="file" class="attach" name="attach[]" data-maxsize="5" accept=".png, .jpg, .jpeg" style="display: none;"> ---- するとifは不要になり、これだけでよくなります。 ---- if (attach[i].files[0].size > attach[i].dataset.maxsize * 1024 * 1024) { alert('ファイルサイズが ' + attach[i].dataset.maxsize + 'MBバイトを超えています'); return; } ---- 試していませんが、だいたいこんな感じでいいと思います。

php_learn
質問者
php_learn
質問者

補足

Q.まずJavaScriptのコードはそのままで、 アイコン画像を追加した画面で動作確認されましたか。 for (let i = 0; i < attach.length; i++) {} iが0の時はアイコン画像の処理になり、 iが1以降の時はアップロードファイルの処理になります。 アイコン画像なのかアップロードファイルなのかは、 iの値を判定することでわかります。 A.訂正ありがとうございます。動作確認はしておりませんでした申し訳ありません。 0の時にアイコン画像の処理にするという考えは浮かびませんでした勉強になります。 Q.アイコン画像とアップロードファイルで違う処理をしたい場合はこう書きます。 ---- if(i == 0){  アイコン画像の処理(A) }else{  アップロードファイルの処理(B) } ---- A.回答ありがとうございます。通常はクラス名を Document: querySelectorAll() で取得してからそれぞれのコードを書くと思うのですが、iで判別するということはクラス名は統一するということでしょうか? Q.使えないのはここだけです。 「➀カメラ画像ではなく別の画像を用意する、可能であれば画像サイズは5MBで制限したい」 こちらは、 「➁アイコンは画像のみアップロードを許可」 アイコン画像の属性acceptで完結しているのでいいと思います。 では、画像サイズの処理だけ変更すればいいことがわかりました。 A.回答ありがとうございます。画像のアップロードのみ許可は HTML で制御できるんですね。 1つだけ気になることがあるのですが、アイコン画像の表示サイズを40×40で想定している場合 CSS で縮小する方法になるのでしょうか? Q.なのでここを変数にします。 ---- if(i == 0){ maxsize = 5; }else{ maxsize = 15; } if (attach[i].files[0].size > maxsize * 1024 * 1024) { alert('ファイルサイズが ' + maxsize + 'MBバイトを超えています'); return; } ---- A.修正ありがとうございます。頂いたコードを見ると i == 0 はファイルアップロードにも使われているようなので、画像ファイルかファイルアップロードかどうやって判定しているのか分からずお聞きしたいです。

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.10

・ファイルのアップロードと処理を分けるべきか悩んでおります。 分けなくてやってみて問題なければそれでいいと思います。

php_learn
質問者

補足

回答ありがとうございます。 任意で画像アイコンをアップロードする機能(アップロードされていない場合はダミー画像を表示)を下記の条件で考えてみたのですが、 for (let i = 0; i < attach.length; i++) {} が clear ボタンまで囲っているためまとめ方が分からず dell_ok さんにアドバイス頂きたいです。 if else 文でファイルアップロードと画像アイコンアップロードの分岐を考えてみたのですが、上記の理由からコードを分断する形をとっております。 同じ処理を何度も行うのであればその部分を抜き出して、関数として独立させる方法もあるとアドバイス頂いたのですが、今回の場合難しいのではないかと思っております。 ※参考サイト https://qiita.com/matsuby/items/1010ae38ee6258fd8020 ➀カメラ画像ではなく別の画像を用意する、可能であれば画像サイズは5MBで制限したい ➁アイコンは画像のみアップロードを許可 ➂clear ボタンのデザインはそのまま使う ※test.phpに考えたコードを書いております。 https://wandbox.org/permlink/oovm46QxskLQNXFU ※クラス名で条件分岐(入力されたら消す画像の分岐) https://www.imamura.biz/blog/27372 ※画像が存在しない場合ダミー画像を表示する https://mebee.info/2020/11/19/post-17828/

関連するQ&A

  • WordPressの質問(q1023581)の続

    回答が遅くなってしまい申し訳ありません… 確認画面で分からないところがあり、アドバイスお願い致します。 ➀アップロードされたファイルを表示画面と同じ大きさ(height: 350px; width: 528px;)で表示したい場合どうすれば良いでしょうか? HTML を書き換えるコードの画像サイズを変更しても変化がないためどうすべきか悩んでおります。 ➁名前と画像アイコンの表示順を逆にしたいのですが、bbs_quest_input.php の452行目の divNamaePartialParts.appendChild(usericonImg); と 455行目の divNamaePartialParts.appendChild(child); コードで順番を変更させる方法が分からず教えて頂きたいです。 上記とは別の疑問になるのですが、質問文、質問タイトル、名前それぞれ残り1文字入力可能な状態で制限がかかってしまいます。 これは以内というコードになっているからでしょうか?何が原因となっているのか分からずアドバイス頂きたいです。 ※現在のコード https://wandbox.org/permlink/piR82q0rnnWvVphI ※確認ページ表示画面 https://imgur.com/AucGqLf.png ※質問掲示板 http://www.irasuto.cfbx.jp/%e8%b3%aa%e5%95%8f%e6%8e%b2%e7%a4%ba%e6%9d%bf/

    • 締切済み
    • PHP
  • javascriptのクラス名操作について

    javascriptのgetElementsByClassNameについて質問があります。 下記のようなクラス名を削除して別のクラスをつけるサンプルプログラムを作成しましたがjavascriptのエラーが出てクラスの追加できません。 ※エラー内容:Uncaught TypeError: Cannot read property 'classList' of undefined ---------以下プログラム-------------- <div class="a">aaa</div> <script> var obj = document.getElementsByClassName("a"); obj[0].classList.remove("a"); obj[0].classList.add("b"); </script> --------以上---------------------------- 「obj[0].classList.remove」をした時の前後で「console.log("obj");」をしたところ、 remove後のobjの値が空になっていました。 なぜこうなるか分からないため、分かる方ご教授の程よろしくお願い致します。

  • wordpressで余計な余白を削りたい

    WorpdressでTwenty Seventeenというテンプレートの子テーマを使っています。 静的HTMLページで作ったサイトをWordPressに持ってきたのですが、 静的ページより全体的に余白ができてしまって困っています。 画像と画像の間やヘッダーの上部です。 style.cssで追加したmarginやpaddingをいじっているのですが、静的ページと同じになりません。 余白を削る良い方法はありますでしょうか。 img { vertical-align:bottom; } で画像間の隙間を無くしてみました。 vertical-align:bottom; を追加する前とした後では隙間の出来が違うのですが、それでも静的ページと同じになりません。 「ヘッダー」もfunctions.phpに add_filter( ‘show_admin_bar’, ‘__return_false’ ); を追加したら追加する前よりは余白が減りましたがそれでも静的ページより余白ができてしまいます。 atyle.css以外の場所で余白を削るのかもしれません。

  • Javascript初心者です助言おねがいします。

    オセロを作成しています。 盤面の上にaからhも文字を表示して盤面の左に1から8の文字を表示させたいのですが、どうもうまくいきません。どうすればよいでしょうか。 Javascript // ボードの上に a から h までの文字を表示する const letters = document.createElement("div"); letters.classList.add("letters"); for (let i = 0; i < 8; i++) { const letter = document.createElement("div"); letter.classList.add("letter"); letter.textContent = String.fromCharCode(97 + i); letters.appendChild(letter); } // ボードの左に 1 から 8 までの数字を表示する const numbers = document.createElement("div"); numbers.classList.add("numbers"); for (let i = 1; i <= 8; i++) { const number = document.createElement("div"); number.classList.add("number"); number.textContent = i; numbers.appendChild(number); } board.appendChild(numbers); // 盤面を作成 for (let row = 0; row < 8; row++) { for (let col = 0; col < 8; col++) { const cell = document.createElement("div"); cell.classList.add("cell"); cell.setAttribute("data-row", row); cell.setAttribute("data-col", col); board.appendChild(cell); cells[`${row}-${col}`] = cell; } board.appendChild(letters); } css .letters { display: flex; justify-content: space-between; margin-bottom: 8px; } .letter { width: 12.5%; text-align: center; } .numbers { display: flex; flex-direction: column; justify-content: space-between; margin-right: 8px; } .number { height: 12.5%; text-align: center; }

  • visual studioのデザイナ画面でエラーがでる

    visual studio 2008 express edition C#3.5 を使用しています。 新しい項目の追加からフォーム画面をそれぞれ 「Base.cs」 public partial class Base : Form { public Base(int i) { InitializeComponent(); } } 「CSharp.cs」 public partial class CSharp : Base { public CSharp(int i) : base(i) { } } とCSharpクラスはBaseクラスを継承させるようにしたいのですが、 上のように引数付きコンストラクタで記述すると 「型 'Test.Base' にコンストラクタが見つかりませんでした。 」 というエラーが出てデザイン画面が表示されなくなります・・・ 次のように 「Base.cs」 public partial class Base : Form { public Base() { InitializeComponent(); } public Base(int i) { InitializeComponent(); } } Baseクラスに引数なしのコンストラクタを追加すれば問題なくデザイン画面が表示されるのですが、 これはvisual studioだから起こるエラーなのでしょうか?

  • 【至急】デート時の会計 どれがまし?

    今晩、年上の男性と初デートします。 以下の中で、どれがましですか? ➀レジで、男性の横に立ち、財布を持って「私もお支払いします」と言う。 ➁レジで会計をしてくれている男性から少し離れたところで、財布を待ち、お店をでてから、「私の分です」or「(金額を把握できててない場合は)おいくらですか」と言って支払う。 ➂レジで会計をしてくれている男性から少し離れたところで、財布を出さずに待ち、お店を出てから、➁と同様にして、自分の文を支払う。 今までどれもいい印象の時と悪い印象をもたれる事がありました。 悪い印象については、店員に面子がたたないから財布は出してほしくないだとか、奢ってもらって当たり前という考え方なのかと思ったなど…。 男性もいろいろいるので、全員にマッチする方法はないとは思いますが、できれば30歳前後の男性に伺いたいです。 回答ですが、できれば➀の場合、2人のやり取りが店員に面子が立たないと思わないのか、そこらへんも回答いただけると嬉しいです。 また、初デートですし、会計の前にお手洗いでお化粧直ししたいです。その間にお支払いしてくださっていた方もいらっしゃいます。 今晩会う彼がどんな方なのかあまり知らないので、どうするのかわかりませんが、もし、会計をしてくださっていた場合(店員さんがいるレジを素通りした際)、「お会計してくださったのですか?私もお支払いします」と言ってもいいのでしょうか? もう、どれが正しいのか分からなくて、その方がどういう方か分かるまでは疲れます。

  • インスタンス内から自分のクラス名を取得する方法

    クラスインスタンス内から自分のクラス名を取得しようと思うと、self.class.nameで取得できますが、type.nameでも取得できます。 しかし、typeは非推奨メソッドとなっているため、警告が出て、このままでは使用することができません。 素直にself.classを使えばいいのかもしれませんが、selfのワンクッションがどうにも気に入りません。 スマートな記述方法あったら教えて下さい。 # self.class.nameを使用する場合 class MyClass  def print_classname   puts self.class.name   # puts class.name これはエラー  end end # type.nameを使用する場合 class MyClass2  def print_classname   puts type.name # これはdeprecatedの記述で警告が出る  end end

  • パネルの上書きをしたい

    何個のJList等が作成されるか未定で、必要になればその都度JPanelに追加されるというプログラムを考えています。以下のクラスを作成し、呼び出し指定したJPanelに貼り付けることをしました。 2度目の呼び出しは一度目に呼び出して貼り付けられたJList等は不要で表示しないでよいのですが、残したまま追加という形で表示されました。 以前のものが残されているのはJPanelが新しいものではないということがわかりましたのでaddcomを呼び出す前に一度初期化しました。 ですが今度パネルが重なるのか文字が重なる(はっきり重なるわけではなくうっすら文字のようなものが見えます)状態になりました。 表示しているJPanelは別のJPanelのボーダーレイアウトのcenterにその都度貼り付けています。 クラスには問題はないと思われますか? 毎回同じパネルに貼り付ける場合貼り付ける直前に同じ箇所に貼り付けられていたパネルはどうなるのでしょうか?単に貼り付けられなくなるだけなのでしょうか?それとも上から貼り付けられるだけなのでしょうか?いろいろ試していると上から貼り付けられるような気がします。 class addcom{ JPanel addpanel; Vector listaddress; addcom(JPanel addpanel,Vector attribute,Vector listaddress){ this.listaddress = listaddress; this.addpanel = addpanel; } void addList(Vector setattribute){ JList list = new JList(setattribute); addpanel.add(list); listaddress.add(list); } void addLabel(String str,Vector labeladdress){ JLabel label = new JLabel(str); addpanel.add(label); labeladdress.add(label); } void addButton(String str,Vector buttonaddress){ JButton button = new JButton(str); addpanel.add(button); buttonaddress.add(button); } }

    • ベストアンサー
    • Java
  • (AS3)あるクラスが存在するかどうかを調べるにはどうすれば?

    var className:String = "aaa"; if(null === getDefinitionByName(className) as Class){ trace("存在しない") }else{ trace("存在する") } aaaというクラスが存在するかしないかを判定したいのです。上のスクリプトのようにnullで判定できるかと思ったのですが、存在しなかった場合にはエラーがでてきてうまくいきません。 なにかよい方法はありませんか? ちなみにActionScript3.0の質問です。

    • ベストアンサー
    • Flash
  • CSS内で呼び出してる画像に対して、class属性をつけたい

    CSS内で呼び出してる画像に対して、class属性をつけたい お世話になります、CSSに関して下記のようなことは可能なのでしょうか。 とあるライブリにimgタグにclass属性を指定して使用するものがありました。 例:<img src="image.gif" class="○○"/> (クラスを指定すると画像にエフェクトがかかる) これをcssで下記のように呼び出している画像に対して適用することは可能でしょうか。 [cssファイル] #bkg .opt1 { background: url('画像のパス'); } [html] //こんな感じで呼んでいる <li class="bkg opt1"><span>image</span></li> CSS内でクラス指定ができないものかと色々試してみたもののうまくいきません・・ 適用方法、ヒント等教えていただけますでしょうか よろしくお願いします

専門家に質問してみよう