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

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

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

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

JavaScript

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

Q&A

解決済

1回答

588閲覧

vue.js 動的にclass名を決定したい

TKG000

総合スコア6

Vue.js

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

JavaScript

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

0グッド

0クリップ

投稿2022/11/14 09:46

こちらのLive demo
https://getbootstrap.jp/docs/5.0/components/modal/
を使用してモーダルを製作しています。

複数個のボタンを用意して、それぞれで別のモーダルを立ち上げるようにするために

data-bs-target="#exampleModal" id="exampleModal"

この二つの部分の名前を動的に決定したいです。

idに関しては、:id=[[index]]
※indexは連続する数値

とすることでおそらく解決できているのですが、data-bs-targetに関しては、:data-bs-target="#[[index]]"とすると挙動がおかしくなってしまいます。

どなたかご教示お願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

説明が下手ですが…

属性にbindする際はJS式(JSのコード)を記述するため、#[[index]]は式として成り立っていません
デリミタ(おそらく投稿者様は{{ }}[[ ]]に変更している)を使った変数展開は式の外でしか使えないため、式の中では外しましょう

なので普通に文字列をjsで記述すると動くと思います

indexStringなら::data-bs-target="'#'+index"
indexIntなら::data-bs-target="'#'+String(index)"

注意としてJS式を文字列として記入するのでシングル・ダブルクオーテーションを両方使っています

投稿2022/11/14 10:43

編集2022/11/14 10:48
rykss

総合スコア100

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

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

TKG000

2022/11/15 09:24

ありがとうございました!
TKG000

2022/11/18 09:49 編集

:data-bs-target="'#testModal'+String(index)" :id="'testModal'+String(index)" 教えていただいた通りに書いてみるとうまくいきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問