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

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

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

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

PHP

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

JavaScript

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

Q&A

解決済

3回答

1364閲覧

elementの中のphpに対してjsでgetelementbyは可能か

momolength

総合スコア62

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

PHP

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

JavaScript

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

0グッド

0クリップ

投稿2021/04/01 01:20

編集2021/04/01 02:04

<やりたいこと>
inputをまとめているdiv属性を非表示にしたい。

現在、main.phpに

<?php echo $this->element('fruit/apple.php'); ?>

とし、その中にinputを用意しています。

https://developer.pi-pe.co.jp/docs/form/2018005/
こちらのサイトを参考にし、inputをまとめているdiv(class="test")ごとnoneにしようと思っています。

document.getElementsByClassName('test').style.display = "none";

しかし、elementから参照しているためjsでgetelementby出来ない状況です。
main.phpに記述しているelement自体をdivで囲み、noneすると消えるんですが、
いずれはそのinputにdisableとかを付与したい為apple.phpの中を見る?ようにしたいです。
専用の書き方がありますか?
教えていただけませんか。

解決したが...

document.getElementsByClassName
とclass指定していたんですが、
document.getElementById
としid指定にしたところ、要素が消えました。
これはなぜでしょうか?

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

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

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

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

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

FKM

2021/04/01 01:36 編集

そのスクリプト、どこに書いてます?レイアウトのheadタグの中ですか?それともビューファイルの中(bodyタグの中)ですか?
maisumakun

2021/04/01 01:47

> elementから参照しているためjsでgetelementby出来ない状況です。 どういう意味でしょうか?
momolength

2021/04/01 01:53 編集

ありがとうございます。 >そのスクリプト、どこに書いてます?レイアウトのheadタグの中ですか?それともビューファイルの中(bodyタグの中)ですか? これは、elementを記述しているmain.phpファイルのbodyタグ下部です。 main.phpの中に$this->elementでapple.phpを参照/呼び出ししています。
FKM

2021/04/01 02:04

getElementsByClassNameで取得した値をconsole.logで表示したらどうなってますか?
momolength

2021/04/01 02:09

ありがとうございます。 >getElementsByClassNameで取得した値をconsole.logで表示したらどうなってますか? これなんですが、main:727 Uncaught TypeError: Cannot set property 'display' of undefined と出て表示されません
guest

回答3

0

出力済みのPHPであればただのHTMLですからidが振ってあればDOMを掴むことは可能です。
idの競合やtypoが無いかよくよく検証してみてください

投稿2021/04/01 01:50

yambejp

総合スコア114843

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

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

momolength

2021/04/01 02:13

classをidにすることで、解決した旨上記に追記したのでご確認お願いできますか?
guest

0

ベストアンサー

document.getElementsByClassName('test').style.display = "none";

これだと取得されるのはオブジェクトになるので、一つ一つにdisplay = "none"を適用するには

js

1var tests = document.getElementsByClassName('test'); 2for(var i = 0; i < tests.length; i++) { 3 tests[i].style.display = "none"; 4}

このようにループ状にしないとだめです。

投稿2021/04/01 02:14

編集2021/04/01 02:25
FKM

総合スコア3640

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

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

maisumakun

2021/04/01 02:15

> これだと取得されるのは配列になるので 配列のように使える面もありますが、HTMLCollectionというオブジェクトであって配列ではありません。
FKM

2021/04/01 02:26

間違い指摘感謝します。修正しました。
momolength

2021/04/01 03:19

https://hacknote.jp/archives/21892/ ここに記述されていましたね。 しかし、色々見てみたんですがこれはいつ使うんですか? なぜclassとidでこれほど違うんでしょうか。
FKM

2021/04/01 04:13

classはグループに対して適用するもので、idは基本単一のDOM要素に対して適用するものだからです。 jQueryはどちらかというとデザイン寄りの制御用ライブラリなので、クラスも同じように サクッと取得できるようにしてますが、基本javascriptはidで制御するものですからね。
maisumakun

2021/04/01 04:15

何であろうが1つだけ取りたい、のならquerySelectorもあります。
guest

0

getElementsByClassNameはElementsと複数形になっているように、当てはまる複数の要素が一気に取れます。そのため、返り値は配列のようなものとなり、直接.styleと続けることはできません。

投稿2021/04/01 02:14

maisumakun

総合スコア145184

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問