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

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

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

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

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

3137閲覧

セレクトボックスに選択した値を表示させたい。

kgoa

総合スコア4

JavaScript

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

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2022/01/18 04:22

セレクトボックスに選択した値を表示させたい。

現在、セレクトボックスを配列をmap関数でセレクトメニューを生成するように作成しております。
配列は連想配列になっており、選択した連想配列の情報を抜き出すような仕組みを作っているのですが、
セレクトボックスから生成されたセレクトメニューを選択しても選択した表記名が表示されません。
選択した連想配列の値は取り出せております。

どなたかセレクトボックス内に選択した表示名を表示する事と、選択した連想配列の情報を抜き出す方法をご教授いただけませんでしょうか?

何卒よろしくお願いいたします。

該当のソースコード

react

1import * as React from "react"; 2import Box from "@mui/material/Box"; 3import InputLabel from "@mui/material/InputLabel"; 4import MenuItem from "@mui/material/MenuItem"; 5import FormControl from "@mui/material/FormControl"; 6import Select from "@mui/material/Select"; 7 8export default function BasicSelect() { 9 const [users, setUsers] = React.useState([ 10 { name: "AAA", age: "25", weight: "70", height: "180" }, 11 { name: "BBB", age: "77", weight: "66", height: "170" }, 12 { name: "CCC", age: "51", weight: "87", height: "173" }, 13 { name: "DDD", age: "39", weight: "54", height: "167" } 14 ]); 15 16 const [select, setSelect] = React.useState(""); 17 18 const [age, setAge] = React.useState(""); 19 const [weight, setWeight] = React.useState(""); 20 const [height, setHeight] = React.useState(""); 21 22 //セレクトボックスを選択・ボックス内に表示 23 const handleChangeSelect = (event) => { 24 setSelect(event.target.value); 25 }; 26 27 //選択したユーザーの情報をsetStateで入れる 28 const handleSelectChange = (index) => { 29 setAge(users[index].age); 30 setWeight(users[index].weight); 31 setHeight(users[index].height); 32 }; 33 34 //コンソールに表示 35 React.useEffect(() => { 36 console.log("age:" + age); 37 console.log("weight:" + weight); 38 console.log("height" + height); 39 },[}); 40 41 const [number, setNumber] = React.useState(""); 42 const handleChange = (event) => { 43 setNumber(event.target.value); 44 }; 45 46 return ( 47 <div> 48 <Box sx={{ minWidth: 120 }}> 49 <FormControl fullWidth> 50 <InputLabel id="demo-simple-select-label">User</InputLabel> 51 <Select 52 labelId="demo-simple-select-label" 53 id="demo-simple-select" 54 value={select} 55 label="人間" 56 onChange={handleChangeSelect} 57 > 58 {users.map((val, index) => { 59 const name = val.name; 60 return ( 61 <div key={index}> 62 <MenuItem 63 value={name} //この値はselectに入れたい 64 onClick={() => { 65 handleSelectChange(index); 66 }} 67 > 68 {name} 69 </MenuItem> 70 </div> 71 ); 72 })} 73 </Select> 74 </FormControl> 75 </Box> 76 77 <p>↓元のサンプル</p> 78 79 <Box sx={{ minWidth: 120 }}> 80 <FormControl fullWidth> 81 <InputLabel id="demo-simple-select-label">number</InputLabel> 82 <Select 83 labelId="demo-simple-select-label" 84 id="demo-simple-select" 85 value={number} 86 label="number" 87 onChange={handleChange} 88 > 89 <MenuItem value={10}>Ten</MenuItem> 90 <MenuItem value={20}>Twenty</MenuItem> 91 <MenuItem value={30}>Thirty</MenuItem> 92 </Select> 93 </FormControl> 94 </Box> 95 </div> 96 ); 97}

下記にcodesandboxのURLを表記いたします。
https://codesandbox.io/s/basicselect-material-demo-forked-p33z2?file=/demo.js:0-2823

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

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

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

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

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

guest

回答1

0

ベストアンサー

  1. <Select> の直下は <MenuItem> じゃないと動かないようです。 div を取り除いたら動きました。

  2. それぞれ、{age} {weight} {height} で使えますよ

投稿2022/01/19 10:18

sum6

総合スコア232

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

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

kgoa

2022/01/20 00:05

ご回答いただきありがとうございます! 他で作った物をコピペしてから編集してたなごりでdivが残ってました。。 今後は安易なコピペは気をつけようと思います。 とても助かりました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問