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

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

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

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

JavaScript

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

Q&A

1回答

572閲覧

週Vue.jsでclassがある場合とない場合でテキストを変更したい

MH00214

総合スコア53

Vue.js

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

JavaScript

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

0グッド

0クリップ

投稿2020/10/23 07:04

編集2020/11/04 02:12

一部不具合を含んだコードや誤った記述があったため、質問を削除しました。再度調べ直して投稿します。

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

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

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

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

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

gogoweb_ikeda

2020/10/23 07:10

disabledクラスはあらかじめHTML内に記述されているのでしょうか? それともVueJS内で付与されますか?(その場合そのタイミングでisSeminarDisabledの値を変更してください) それともjQuery等からクラスを追加してそれをVueに反映させたいのでしょうか?
MH00214

2020/10/23 07:19

disableクラスは ``` <div class="inquiry-form-inner <%= disabled_class("disabled") %>"> この中にformがある </div> ``` という形で記載してあります。 <%= disabled_class("disabled") %>はRailsのなかでhelperを定義して、「受付終了」の場合はdisabledを付与するようにしています。
Arice_Banan

2020/10/23 08:24

disabledクラスはVueインスタンスが生成され、DOMを生成し終わった後に、 無くなったり、着いたりしますか? 無くなったり、着いたりしないのであれば、 Vueインスタンスがmountedした時に、 disabledクラスが付与された要素をgetElementして、 isSeminarDisabledを設定できると思います。
MH00214

2020/10/23 13:39

DOMを生成し終わった時から見ると、そこから消えたりということはないです。上記のコードの通り、このdisabledというクラスはRailsのhelperメソッドを使って、このページが「受付終了なのかそうでないのか」を判断してから付与されます。なのでDOMを生成した後に何か処理が起こるということはありません! > 無くなったり、着いたりしないのであれば、 > Vueインスタンスがmountedした時に、 > disabledクラスが付与された要素をgetElementして、 > isSeminarDisabledを設定できると思います。 とのことでしたので、 mounted: function() { const isSeminarDisabled = this.$refs.inquiryFormInner.classList.contains('disabled'); if(isSeminarDisabled) { this.isSeminarDisabled = true } }, computed: { submitValue: function() { if (this.isSeminarDisabled) { return "受付終了しました" } return "申し込む" }, }, のような形でやれば良いですかね? getElementsByClassNameとかでも良さそうですが。
guest

回答1

0

ご確認ありがとうございます。

のような形でやれば良いですかね?

はい。私が思っていた通りです。

・一応動くという意味ではできたんですが、これで良いのかご指導いただけると助かります。

・getElementsByClassNameとかでも良さそうですが。

私も指導出来るほど習熟していないので、「私なら」で申し訳ないですが、

私なら、「disabledクラスが付与される要素に、idを振って、それをgetElementByIdします。」

なぜなら、Vueはインスタンス内のデータをもとにDOMを生成・変更するフレームワーク(だと思っている)なので、
この、インスタンス内のデータは必ず一つの状態(disabledクラスが付与される要素)をもとに、データを定義されるべきだと思っているからです。

一応サンプルも載せておきます。

html

1 <div id="hoge" class="disabled"> 2 <form action="" class="disabled"> 3 <div id="app2"> 4 <input 5 id="input2" 6 type="submit" 7 name="submit" 8 :value="submitValue" 9 class="novasell-inquiry-form-submit-button" 10 /> 11 </div> 12 </form> 13 </div>

vue

1 var app2 = new Vue({ 2 el: "#app2", 3 data: { 4 isSeminarDisabled: false 5 }, 6 mounted: function() { 7 const hoge = document.getElementById("hoge"); 8 console.log(hoge.classList); 9 if (hoge.classList.contains("disabled")) { 10 this.isSeminarDisabled = true; 11 } 12 }, 13 computed: { 14 submitValue: function() { 15 if (this.isSeminarDisabled) { 16 return "受付終了しました"; 17 } 18 return "申し込む"; 19 } 20 } 21 });

投稿2020/10/26 00:41

Arice_Banan

総合スコア60

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問