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

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

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

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Vue.js

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

JavaScript

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

Q&A

解決済

1回答

5367閲覧

Vue.jsボタンクリックで色や付属の画像を切り替えたい

shirout

総合スコア36

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Vue.js

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

JavaScript

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

0グッド

0クリップ

投稿2021/01/21 14:51

以下のコードでボタンAをクリックしたときに、ボタンAの色と画像を切り替えて、尚且つボタンBのテキストと画像も変えたいのですがどのような記述をすればよいでしょうか?

clickイベントで検索して実行してみましたが何も起きずに詰まってしまいました。

Aボタン押すと、Aボタンの色が赤色→青色、リンゴの画像がバナナ
尚且つ、BボタンのテキストがCに変更、画像もバナナからメロンに変わる

vue.js

1 <template> 2 <v-btn height="50px" width="50px" color="red"> 3 <v-col style="font-size: 30px;">A</v-col> 4 <v-img src="static/assets/image/apple"></v-img> 5 </v-btn> 6 <v-btn height="50px" width="50px" color="red"> 7 <v-col style="font-size: 30px;">B</v-col> 8 <v-img src="static/assets/image/banana"></v-img> 9 </v-btn> 10</template>

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

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

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

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

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

guest

回答1

0

ベストアンサー

値をバインドします。

js

1<img :src="image"> 2 3data () { 4 return { 5 image: "neko.jpg" 6 } 7}

image の値を書き換えれば <img src="..."> も書き換わります。

js

1methods: { 2 click () { 3 this.image = "inu.jpg" 4 } 5}

color も同じように

<v-btn height="50px" width="50px" :color="color"> data () { return { color: "red" } }, methods: { click () { this.color = "blue" } }

テキストは

<button>{{text}}</button> data () { return { text: "B" } }, methods: { click () { this.text = "C" } }

まとめると

js

1<template> 2 <v-btn :color="a.color" @click="click">{{a.text}}</v-btn> 3 <img :src="a.image"> 4 5 <v-btn :color="b.color">{{b.text}}</v-btn> 6 <img :src="b.image"> 7</template> 8 9<script> 10export default { 11 data () { 12 return { 13 a: { 14 text: "A", 15 color: "red", 16 image: "apple.jpg" 17 }, 18 b: { 19 text: "B", 20 color: "red", 21 image: "banana.jpg" 22 }, 23 } 24 }, 25 methods: { 26 click () { 27 this.a.color = "blue" 28 this.a.image = "banana.jpg" 29 this.b.text = "C" 30 this.b.image = "melon.jpg" 31 } 32 } 33} 34</script>

v-bind

サンプル

追記(コメントへの回答です)

方法1
押されたボタンとテキストの状態によってclickの振る舞いを変える

方法2
ボタンをA, B, C, D と用意しておき、クリックされたボタンによって表示を切り替える

方法1 はコードがカオスになりがち、方法2 はボタンの順番を制御(たとえば C B という並びに)できません。
順番を制御するには、それぞれのボタンをコンポネントに切り出し動的なコンポネントで切り替えます。(もっといい方法があるかも)

投稿2021/01/21 23:27

編集2021/01/22 02:56
neko_daisuki

総合スコア2090

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

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

shirout

2021/01/22 01:59

ご丁寧にありがとうございます。 Cをクリックした場合にAとCの画像がもとに戻る処理をしたいのですがそちらも教えて頂けないでしょうか? 再度同じようなことを書かなければならないのでしょうか?
shirout

2021/01/22 08:40

ありがとうございます。 おっしゃる通りできました。 またわかりやすかったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問