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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1703閲覧

【Vue.js】絞り込み検索

anko__

総合スコア5

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2021/09/23 01:57

編集2021/09/23 04:07

■やりたいこと
検索フォームから年度とリーグを設定し、
検索ボタンをクリック後に該当年の選手一覧を表示すること。

下記のHTMLにて、
<label id="leag"><form id="selectDate">で設定した、
リーグと年度を元に、呼び出すjsonファイルを変更し、画面を動的に更新したいと考えています。

■確認できたこと
パリーグ、2005年を選択して
検索ボタンをクリックしたところ、
showPlayersのファンクション内で変数strに"batp2005"と期待している値を埋め込むことはできたのですが、
文字列として認識されているため、jsonで定義しているbatp2005を見に行かず、
空のdataが返却されてしまいます。
(*上記ファンクション内で、app.items=batp2005と直書きした場合、想定通りの挙動になったため、
ダブルクォーテーションで囲んであることが問題と認識しています。)

■改めてお聞きしたいこと
上記のstrを文字列として認識せず、正常に検索処理が行われるために改修すべき点、
または、検索フォームの実装において、別の案がありましたらご教授いただけると幸いです。

初心者な質問で申し訳ございませんが、
よろしくお願いいたします。

html

1<!DOCTYPE html> 2<html xmlns:th="http://www.thymeleaf.org"> 3 4 5<head> 6<link rel="stylesheet" href="css/player.css"> 7<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script> 8<script th:src="@{/js/jquery-3.6.0.min.js}"></script> 9<script th:src="@{/json/batc2005.json.js}"></script> 10<script th:src="@{/json/batp2005.json.js}"></script> 11 12<meta charset="UTF-8"/> 13</head> 14<body> 15<h3>選手一覧</h3> 16 17<div> 18<label id="leag"> 19 <label><input type="radio" v-model="value" value=batc>セリーグ</label> 20 <label><input type="radio" v-model="value" value=batp>パリーグ</label> 21</label> 22 23<form id="selectDate"> 24 <select v-model="selected"> 25 <option v-for="(year,index) in list" :key="index":value=year> 26 {{ year }} 27 </option> 28 </select>29</form> 30</div> 31<button id="showButton" v-on:click="showPlayers()">検索</button> 32 33<div id="app"> 34 <table class="vue_tbl"> 35 <thead> 36 <tr id="table_head"> 37 <th>項番</th> 38 <th class="player">選手 <span style="font-size: 12px ;width:100%"></span></th> 39 </tr> 40 </thead> 41 <tbody> 42 <tr v-for="(item, index) in items"> 43 <td>{{ index + 1 }}</td> 44 <td class="strEle">{{ item.player }} {{ item.team }}</td> 45 </tr> 46 </tbody> 47 </table> 48</div> 49 50 51<script> 52var app = new Vue({ 53 el: '#app', 54 data() { 55 return { 56 items:batc2005, 57 batp2005 : batp2005, 58 batc2005 : batc2005 59 } 60 }, 61 methods: { 62 isSelect: function (dataList) { 63 this.items = dataList; 64 } 65 } 66}) 67 68var leag = new Vue({ 69 el: '#leag', 70 data: { 71 value: '' 72 } 73}) 74var vm = new Vue({ 75 el: '#selectDate', 76 data: { 77 selected: null, 78 list: [], 79 num:100 80 }, 81 created(){ 82 const year = new Date().getFullYear() 83 for(let i=0;i<=year-2005;i++){ 84 this.list.unshift(year- i) 85 } 86 this.selected=year 87 }, 88}) 89 90var showButton = new Vue({ 91 el: '#showButton', 92 methods:{ 93 showPlayers:function(){ 94 var str = leag.value+vm.selected 95 app.items = str 96 } 97 } 98}); 99 100</script> 101</body> 102 103</html>

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

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

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

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

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

guest

回答1

0

ベストアンサー

ベストプラクティスかはわからないですが、最小限の変更で済ますならば

diff

1 var showButton = new Vue({ 2 el: '#showButton', 3 methods: { 4 showPlayers: function () { 5 var str = leag.value + vm.selected 6- app.items = str 7+ app.items = app[str] 8 } 9 }

とした場合いかがでしょうか。

投稿2021/09/26 22:27

編集2021/09/26 22:28
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

anko__

2021/09/27 12:37

ありがとうございました! インスタンス["要素名"]で要素を取得できるということなんですね 勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問