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

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

新規登録して質問してみよう
ただいま回答率
85.50%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

655閲覧

【json】配列・オブジェクト追加方法

tonari

総合スコア45

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2018/01/29 03:27

編集2018/01/29 03:43

こんにちわ。
いきなりですがこちらのコードを修正することになった際に困ったことがあります。

元のファイル(修正前) <script type="text/javascript"> var markerArray = new Array(); var id = '11'; var no = 1; var href = 'javascript:openYadoSyosai(\'' + id + '\')'; var content = '<a href="' + href + '">'; var markerData = new Data(1111, id, content, "TE" + no); testData.push(markerData); var id = '22'; var no = 2; var href = 'javascript:openYadoSyosai(\'' + id + '\')'; var content = '<a href="' + href + '">'; var markerData = new Data(2222, id, content, "TE" + no); testData.push(markerData); ..... </script>

このデータをjsonにしてそのデータを取得してfor文で回す修正なのですが、
下記の様にしてみたのですが、markerDataのところでどうして良いかわからなくなっています。
詳しい方教えていただけると助かります。
よろしくお願いいたします。

<script id="data" type="application/json"> [ { "id": "11", "no": "1", "markerData": "new Data(1111, id, content, 'TE' + no)"//idに11、noに1を入れたい。 }, { "id": "22", "no": "2", "markerData": "new Data(2222, id, content, 'TE' + no)"//idに22、noに2を入れたい。 }, ..... </script>
<script type="text/javascript"> var testData = JSON.parse(document.getElementById('data').innerText);//データを持ってきている var zMax = testData.length; for (var i = 0; i < zMax; i++ ) { if (testData[i] != null) testData[i].href = 'javascript:openYadoSyosai(\'' + testData[i].id + '\')'; testData[i].content = '<a href="' + testData[i].href + '">';//このtestData[i].contentを”markerData”のcontentに入れたい } </script>

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

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

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

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

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

guest

回答1

0

ベストアンサー

コピペ部分の何が繰り返されているかに着目すれば, さほど難しくありません.
以下考え方について示します.

以下のコードに注目して下さい.

JavaScript

1var id = '11';//(1-1) 2var no = 1; //(1-2) 3var href = 'javascript:openYadoSyosai(\'' + id + '\')';//(1-3) 4var content = '<a href="' + href + '">';//(1-4) 5var markerData = new Data(1111, id, content, "TE" + no);//(1-5) 6testData.push(markerData);//(1-6) 7 8var id = '22';//(2-1) 9var no = 2; //(2-2) 10var href = 'javascript:openYadoSyosai(\'' + id + '\')';//(2-3) 11var content = '<a href="' + href + '">';//(2-4) 12var markerData = new Data(2222, id, content, "TE" + no);//(2-5) 13testData.push(markerData);//(2-6)

この内, (1-x)と(2−x)との間で異なる部分はどこでしょうか?
(1-1)(1-2)では変数に代入している値が, (1-5)ではコードの一部が異なっています. つまり, その部分以外はそのままループ処理とできそうです.

そこで, 元のコードを次のように変形します.

//繰り返し処理に入力されるデータを取り出し, リスト化してみた {id: "11", no:1, a: 1111} {id: "22", no:2, a: 2222} //繰り返し処理をとりあえずforで囲ってみた for(何らかの条件){ var id = ???; var no = ???; var href = 'javascript:openYadoSyosai(\'' + id + '\')'; var content = '<a href="' + href + '">'; var a = ???; var markerData = new Data(a, id, content, "TE" + no); testData.push(markerData); }

但しこのままではJavaScriptとしては正しくないので, リストを配列化し変数名等を追加します.

JavaScript

1var testData = [ 2 {id: "11", no:1, a: 1111}, 3 {id: "22", no:2, a: 2222} 4]; 5testData.forEach(data => { 6 var id = data.id; 7 var no = data.no; 8 var href = 'javascript:openYadoSyosai(\'' + id + '\')'; 9 var content = '<a href="' + href + '">'; 10 var a = data.a; 11 var markerData = new Data(a, id, content, "TE" + no); 12 testData.push(markerData); 13});

ここでtestDataの内容はJSONで取得するとのことでしたから,

HTML

1<script id="data" type="application/json"> 2[ 3 {"id": "11", "no": 1, "a": 1111}, 4 {"id": "22", "no": 2, "a": 2222} 5] 6</script>

JavaScript

1var testData = JSON.parse(document.getElementById('data').textContent); 2testData.forEach(data => { 3 var id = data.id; 4 var no = data.no; 5 var href = 'javascript:openYadoSyosai(\'' + id + '\')'; 6 var content = '<a href="' + href + '">'; 7 var a = data.a; 8 var markerData = new Data(a, id, content, "TE" + no); 9 testData.push(markerData); 10});

となります.

投稿2018/01/29 04:14

defghi1977

総合スコア4756

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

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

tonari

2018/01/29 06:02

ご回答あいがとうございます。 無事このやり方でできました! ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問