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

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

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

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

ラジオボタン

ラジオボタンはフォームに使われる要素のひとつであり、ユーザに限られた選択肢からひとつの答えを選んでもらうというものです。

リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

JavaScript

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

Q&A

解決済

2回答

390閲覧

WEB上の表示、非表示のやり方

clown666

総合スコア2

PHP

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

ラジオボタン

ラジオボタンはフォームに使われる要素のひとつであり、ユーザに限られた選択肢からひとつの答えを選んでもらうというものです。

リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

JavaScript

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

0グッド

0クリップ

投稿2021/06/28 03:48

編集2021/06/28 05:00

前提・実現したいこと

不明のラジオボタンを押すと、選択肢が増えるようにはできたのですが
セレクトボックスからその他を選択した後、テキストボックスを表示させる処理がうまくいきません

追記、PC、タブレット、スマホブラウザに対応させたいです。

発生している問題・エラーメッセージ

エラーメッセージはなし

該当のソースコード

上手くいった方

php

1<head> 2<meta charset="UTF-8"> 3<title> </title> 4<script type="text/javascript" src="blood_type_script.js"></script> 5<script type="text/javascript" src="allergy_script.js"></script> 6</head> 7血液型を選択してください。<br /> 8<input type="radio"name="blood_type_id"value="1"onclick="checkradio('inline');">A9<input type="radio"name="blood_type_id"value="2"onclick="checkradio('inline');">B10<input type="radio"name="blood_type_id"value="3"onclick="checkradio('inline');">AB11<input type="radio"name="blood_type_id"value="4"onclick="checkradio('inline');">O12<input type="radio"name="blood_type_id"value="99"onclick="checkradio('none');">不明 13</br> 14<span id="RH_type"hidden> 15<input type="radio"name="Rh_type_id"value="1">RH+ 16<input type="radio"name="Rh_type_id"value="2">RH- 17<input type="radio"name="Rh_type_id"value="">不明</br> 18</span>

blood_type_script.js

javascript

1document.getElementsById('RH_type').style.display=none;//追記、不要と判断したため削除しました 2function checkradio( disp ) 3{ 4 document.getElementById('RH_type').style.display = disp; 5} 6

上手くいかない方

php

1<head> 2<meta charset="UTF-8"> 3<title> </title> 4<script type="text/javascript" src="blood_type_script.js"></script> 5<script type="text/javascript" src="allergy_script.js"></script> 6</head> 7アレルギー情報を入力してください。</br> 8<select name="allergy" multiple> 9<?php 10$names=array('','卵','乳','小麦','海老','蟹','落花生','蕎麦','アーモンド','鮑','烏賊','いくら','オレンジ','カシューナッツ','キウイフルーツ','牛肉','胡桃','胡麻','鮭','鯖','大豆','鶏肉','バナナ','豚肉','松茸','桃','その他'); 11for($i=1;$i<=25;$i++) 12{ 13 echo "<option value={$i}>{$names[$i]}</option>"; 14} 15echo "<option value='26'onclick='click('inline')'>{$names[26]}</option>" ;//追記、ご指摘があったためclick()の中に、inlineを追加しました。 16?> 17</select></br> 18<span id="allergy"hidden> 19<input type=text name=allergy></br> 20<input type=text name=allergy></br> 21<input type=text name=allergy></br> 22</span>

allergy_script.js

javascript

1document.getElementsById('allergy').style.display=none;//追記、不要と判断したため削除しました 2function click( disp )//追記、ご指摘があったためcheck→clickと書き直しました。 3{ 4 document.getElementById('allergy').style.display = disp; 5}

試したこと

スペルチェック
同じような機能のサンプルコードの確認

追記、回答者の方のコードを参考にしたところ、PCブラウザでの動作を確認しました。

補足情報(FW/ツールのバージョンなど)

XAMMP3.3.0
VSCode

初学者なので至らぬコード記述だとは思いますが、よろしくお願いします。

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

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

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

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

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

guest

回答2

0

定義はcheck( disp )ですが、呼び出しがclick()になってますね。

投稿2021/06/28 04:13

m.ts10806

総合スコア80861

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

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

clown666

2021/06/28 04:28

ご指摘ありがとうございます。 該当箇所を修正しました。
m.ts10806

2021/06/28 04:36

引数渡さないとundefinedですね。 私は回答に引数まで書いてます。
clown666

2021/06/28 04:56

お返事ありがとうございます。 引数にinlineを追加しましたが、まだうまくいかないようです。
m.ts10806

2021/06/28 05:00

'click('inline')' クォートが同じもので被っているので正しく処理されないと思います。どちらかをダブルクォートにしてください
m.ts10806

2021/06/28 05:02

あと、「その他のときだけ」にinline入れないといけません。 PHPは置いといて静的にhtml、Javascriptで正しいものを先に作ってください。
clown666

2021/06/29 03:53

お返事ありがとうございます。 ```HTML アレルギー情報を入力してください。</br> <select name="allergy" multiple> <option value="1">卵</option> <option value="2">乳</option> <option value="3">小麦</option> <option value="4">海老</option> <option value="5">蟹</option> <option value="6">落花生</option> <option value="7">蕎麦</option> <option value="8">アーモンド</option> <option value="9">鮑</option> <option value="10">烏賊</option> <option value="11">いくら</option> <option value="12">オレンジ</option> <option value="13">カシューナッツ</option> <option value="14">キウイフルーツ</option> <option value="15">牛肉</option> <option value="16">胡桃</option> <option value="17">胡麻</option> <option value="18">鮭</option> <option value="19">鯖</option> <option value="20">大豆</option> <option value="21">鶏肉</option> <option value="22">バナナ</option> <option value="23">豚肉</option> <option value="24">松茸</option> <option value="25">桃</option> <option value="26" onclick="click('inline')">その他</option> ``` といった感じでHTMLで書き直してみたのですが、依然allergy_script.jsの機能が作用しません。 何度も試行錯誤しているのですが、上手くいきません。 これは疑問なのですが、HTMLに直接Javascriptを書き込むより、ファイルを分けて参照した方がいいと、どこかで見たので分けていますがこれはどうなのでしょうか?
m.ts10806

2021/06/29 04:05

ブラウザ開発ツールのコンソールにエラーが出てないか確認してください。 >HTMLに直接Javascriptを書き込むより、ファイルを分けて参照した方がいい 外部ファイル化の目的は主に可読性と管理面の問題です。パフォーマンスを求めるのなら直書きが圧倒的に早いですが、複数ページから同じ処理を呼び出す際に何重にもコードが置かれることになるので、大抵は外部ファイルにします。 絶対にそこにしか使わない、学習や検証用のサンプルなのであれば直でも問題ないです。
clown666

2021/06/29 05:22

お返事ありがとうございます。 chromeの開発者ツールからconsoleを確認しましたがエラーは出ていませんでした。 疑問への回答ありがとうございます。参考になりました。
guest

0

ベストアンサー

全体的に書き間違いがおおい

javascript

1<select name="allergy" multiple> 2<?php 3$names=array('','卵','乳','小麦','海老','蟹','落花生','蕎麦','アーモンド','鮑','烏賊','いくら','オレンジ','カシューナッツ','キウイフルーツ','牛肉','胡桃','胡麻','鮭','鯖','大豆','鶏肉','バナナ','豚肉','松茸','桃','その他'); 4for($i=1;$i<=25;$i++) 5{ 6 echo "<option value={$i}>{$names[$i]}</option>"; 7} 8echo "<option value='26' onclick='func()'>{$names[26]}</option>" ; 9?> 10</select></br> 11<span id="allergy"> 12<input type=text name=allergy></br> 13<input type=text name=allergy></br> 14<input type=text name=allergy></br> 15</span> 16 17<script> 18document.getElementById('allergy').style.display="none"; 19function func() 20{ 21 document.getElementById('allergy').style.display = ""; 22} 23</script> 24

投稿2021/06/28 04:18

yambejp

総合スコア115010

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

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

clown666

2021/06/28 04:34

ご回答ありがとうございます。 折角ご指摘頂いたのですが、まだテキストボックスを表示させることが出来ないようです。
yambejp

2021/06/28 04:36

その他を押したら表示されますよね? コピペで動くようにしてあるのですが試してませんか?
clown666

2021/06/28 04:50

お返事ありがとうございます。 こちらの確認また、情報の伝達不足でした。 PCのブラウザでは動作しました。ありがとうございます。 あともう一つ質問なのですが、タブレットのクロームでは動作しなかったのですがどうすればよろしいでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問