🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

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

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

448閲覧

htmlでvue.js使用し、jsに書いたデータを取得する際、返り値の(”)を(’)で返したい。

pepe1122

総合スコア14

JavaScript

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

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2019/11/27 16:29

編集2019/11/28 06:14

現在HTMLを書いておりvue.jsを使っています。

勉強のためvue.jsを使ってhtmlを書いております。

vue.jsでデータを取った後、Shuffle.jsの処理を走れせようと思っていますがうまくいきません。

Shuffle.js現行バージョンは動かなかったため古いバージョンを使っております。

vue.jsでは値を取ってこれてはいるのですが、
Shuffle.jsを走らせるために、
HTML2行目に

<li groups='["other","all"]'>

このように値を取得してきてほしいのですが、

<li groups="["other","all"]">

でダブルコーテーションでデータをとってきてしまい
Shuffle.jsの処理が上手く動きません。

またmein.jsの表記を変えて

<li groups="['othe','all']">

のように値を取得はしたところ

Shuffle.jsが動きませんでした。

(ベタでコード書いてみても同じ)

"['othe','all']"   NG '["other","all"]'  OK

上記のように取得することは可能でしょうか?

まだ初心者のため
vue.js
Shuffle.js
のファイルを読み解きシングルコートに変えようとしましたが、
なかなか理解できず変更できませんでした。

いい方法ございましらご教授お願いいたします。

該当のソースコード

HTML

1   <div v-for="list in datalists"> 2 <li v-bind:groups="list.group"> 3 <img class="img" :src="list.imgStatic"> 4 <p>{{ list.title }}</p> 5      <p>{{ list.main }}</p> 6 <p>{{ list.date}}</p> 7 </li> 8 </div> 9 <script src="https://cdn.jsdelivr.net/npm/vue"></script> 10 <script src="js/main.js"></script>

js

1new Vue({ 2 el: '#list', 3 data: { 4 datalists: [ 5 { 6 "group": '["other","all"]', 7 imgStatic: ("../static/XXX.jpg"), 8 "title": "タイトル", 9 "main": "メイン", 10 "date": "日付" 11 }, 12       { 13 "group": '["other","all"]', 14 imgStatic: ("../static/XXX.jpg"), 15 "title": "タイトル", 16 "main": "メイン", 17 "date": "日付" 18 }, 19 ], 20 } 21 }); 22

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

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

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

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

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

maisumakun

2019/11/27 22:14

「HTMLが(中略)返ってきてほしい」とありますが、「何らかのサーバサイドがあってHTML自体を変化させて返す」のでしょうか、それとも「Vue.jsの結果」でしょうか。
miyabi_takatsuk

2019/11/27 23:55 編集

datalists内の、各プロパティの"を取ったらどうなりますか? それで直りませんか? また、maisumakunさんが聞いてるサーバーサイドからHTMLを変化させる場合、特にJSON取得の場合は、プロパティ名を"で囲うという仕様のため、なんらかの処理を挟まないと、"がどうしても付いてしまうかと。
pepe1122

2019/11/28 00:32 編集

質問ありがとうございます。 各プロパティの"を取っても"["other","all"]"で戻ってきてしまいます。 まだ勉強中で、詳しく理解してないのですが、 現在bracketsでコードを書いて、ライブプレビューの機能を使いChromeで検証しています。 後々はレンタルサーバーなどあげて確認しようと思っております。
miyabi_takatsuk

2019/11/28 03:53

すみません、勘違いしてました。 値の方ですね。 フレームワークは、要素の属性を定義するときに、"を優先的に使うようになっているので(設定で変えれるとは思う)値の方を変えた方がいいと思いますがどうでしょうか? "['other','all']" とするということです。
pepe1122

2019/11/28 05:52

ありがとうございます。 値の”を変更するとvue.jsの処理は正常に動きデータが"['other','all']"のように取得できるのですが、 もう一つのJSが'["other","all"]'このような形でないと動かないような状態です。 やはりvue.jsかもう一つのjsファイルを読み解き、変更して処理を走らせるしかないのでしょうか?
maisumakun

2019/11/28 06:02

「他の処理」はどのようなものなのでしょうか。 (値の表記法に関係なく、「そもそもVue.jsと相性が悪くうまく動かない」事も考えられます)
guest

回答2

0

vue.jsでデータを取った後、Shuffle.jsの処理を走れせようと思っていますがうまくいきません。

そもそも論ですが、Vus.jsと、Vue.jsの枠組み外でDOMを直接書き換えるようなJavaScriptは、ふつうには両立できません

https://git.hrzg.de/dmstr/vue-shufflejs-pluginのようなものを使ってみるか、それでだめならVue.jsとShuffle.jsのどちらかを諦めるのが適切かと思います。

投稿2019/11/28 06:18

maisumakun

総合スコア145963

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

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

0

ベストアンサー

<li groups="["other","all"]">

でダブルコーテーションでデータをとってきてしまい

なにを根拠にそう判断されたのでしょうか?
見た感じ普通に動いていますが・・・

javascript

1<script src="https://cdn.jsdelivr.net/npm/vue"></script> 2<div id="list"> 3 <div v-for="list in datalists"> 4 <li v-bind:groups="list.group"> 5 <img class="img" :src="list.imgStatic"> 6 <p>{{ list.title }}</p> 7 <p>{{ list.main }}</p> 8 <p>{{ list.date}}</p> 9 </li> 10 </div> 11</div> 12<script> 13new Vue({ 14el: '#list', 15data: { 16datalists: [ 17 { 18 "group": '["other","all"]', 19 "imgStatic": ("../static/XXX.jpg"), 20 "title": "タイトル", 21 "main": "メイン", 22 "date": "日付" 23 }, 24 { 25 "group": '["other","all"]', 26 "imgStatic": ("../static/XXX.jpg"), 27 "title": "タイトル", 28 "main": "メイン", 29 "date": "日付" 30 }, 31 ], 32} 33}); 34</script>

別のJSの処理を走らせたいため、'["other","all"]'という形で取得したいと

とのご意見をいただきましたが、「["other","all"]」で、しゅつりょくされていますね。
たとえば別のjsでこう受け取ってみます

javascript

1<script src="https://cdn.jsdelivr.net/npm/vue"></script> 2<div id="list"> 3 <div v-for="list in datalists"> 4 <li v-bind:groups="list.group"> 5 <img class="img" :src="list.imgStatic"> 6 <p>{{ list.title }}</p> 7 <p>{{ list.main }}</p> 8 <p>{{ list.date}}</p> 9 </li> 10 </div> 11</div> 12<input type="button" id="btn" value="btn"> 13<script> 14new Vue({ 15el: '#list', 16data: { 17datalists: [ 18 { 19 "group": '["other","all"]', 20 "imgStatic": ("../static/XXX.jpg"), 21 "title": "タイトル", 22 "main": "メイン", 23 "date": "日付" 24 }, 25 { 26 "group": '["other","all"]', 27 "imgStatic": ("../static/XXX.jpg"), 28 "title": "タイトル", 29 "main": "メイン", 30 "date": "日付" 31 }, 32 ], 33} 34}); 35document.querySelector('#btn').addEventListener('click',function(){ 36 var x=Array.from(document.querySelectorAll('[groups]')).map(y=>y.getAttribute('groups')); 37 console.log(x); //Array [ "[\"other\",\"all\"]", "[\"other\",\"all\"]" ] 38 console.log(x[0]); // ["other","all"] 39 console.log(x[0].length); //15 40}); 41</script>

配列で受けるとたしかにエスケープされているようにも見えますがこれは
開発ツールの表示上の問題
要素をとれば指定したものが挿入されていることが判断できます

投稿2019/11/28 00:58

編集2019/11/28 06:35
yambejp

総合スコア116661

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

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

pepe1122

2019/11/28 05:44

回答ありがとうございます。説明不足ですいません。 デベロッパーツールでの検証の値で判断しました。 vue.jsからは値は取得できておりますが、その後に 別のJSの処理を走らせたいため、'["other","all"]'という形で取得したいと思った所存です。
yambejp

2019/11/28 06:35

別のJSから受け取った場合も追記しておきました なにも問題ないと思います
pepe1122

2019/11/29 00:52

ありがとうございます。確認いたしました。データ的には””の中だけ取得できているような形なのですね理解できました。知識不足で申し訳ないのですが、そのデータをシングルコートで出力するにはどうしたらいいか、ご教授していただいたりできないでしょうか?
yambejp

2019/11/29 01:01

> そのデータをシングルコートで出力する 具体的にどう出力されればよいか明示してください
pepe1122

2019/11/29 04:28

現在 groups=["other","all"]になっているので groups='["other","all"]'にしたいと思っています。 +で'結合などもできるかなと思ったりしたのですが、上手くいかず... 質問ばかりでお時間取らせてすいません
yambejp

2019/11/29 04:34

> groups=["other","all"]になっているので なっていません おそらくインスペクタ的なものをつかってみると 「groups="["other","all"]"」と見えることをさしているのでしょうけど それは視覚的に表現している便宜的なものです あなたがブラウザに気を使われているだけなのでそれ以上気にすることは無意味です 仮に <div groups='["other","all"]'>aaa</div> とだけ書いたhtmlをブラウザのインスペクタで見てみてください <div groups="["other","all"]">aaa</div> と「見た目上」書き換えられて表示されると思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問