複数の戻り値を取得したかったので、下記サイトを参考にしたのですが、上手くいきませんでした。
https://mayer.jp.net/?p=5307
num = item();でnum.item1の中に値が格納されていると思ったんですが、undefinedと表示されました。
console.logで確かめたらitem1に入る前に実行されているからundefinedと表示されるのかなと思って下の階層に書いてみたんですが、エラーが出ました。
改善策として何も思いつかず、、、
item1,item2,item3を取得したいのですが、どうしたらいいでしょうか。
分かる方、教えて頂きたいです。
html
1<!DOCTYPE html> 2<html lang=""> 3 4<head> 5 <meta charset="UTF-8"> 6 <title>Untitled Document</title> 7 <meta name="Author" content="" /> 8 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 9</head> 10 11<body> 12 <input type="checkbox" onchange="sample(this.checked)">クリック 13 <script> 14 var id = "1234567890"; 15 16 function item() { 17 var item1; 18 var item2; 19 var item3; 20 21 $.getJSON("data.json", function(data) { 22 for (var i in data[0]) { 23 if (/item/.test(i)) { 24 var itemNumber = data[0][i].value.itemId.value; 25 console.log(itemNumber); 26 if (id == itemNumber) { 27 item1 = data[0][i].value.apple.value; 28 item2 = data[0][i].value.name.value; 29 item3 = data[0][i].value.itemName.value; 30 console.log(item1); 31 } 32 } 33 } 34 }) 35 return { 36 "item1": item1, 37 "item2": item2, 38 "item3": item3 39 }; 40 } 41 42 function sample(value) { 43 var num; 44 if (value) { 45 $.getJSON("data.json", function(data) { 46 for (var i in data[0]) { 47 if (/item/.test(i)) { 48 num = item(); 49 //num.item1 50 //num.item2 51 //num.item3が使えるはず 52 console.log(num.item1) 53 } 54 //エラー 55 //console.log(num.item1); 56 } 57 }) 58 } 59 } 60 </script> 61 62</body> 63</html> 64
json
1[ 2 { 3 "id": "12321", 4 "sample": "23121", 5 "item01": { 6 "value": { 7 "apple": { 8 "value": 50 9 }, 10 "user": { 11 "value": 50 12 }, 13 "name": { 14 "value": "箱" 15 }, 16 "itemId": { 17 "value": "1234567890" 18 }, 19 "itemName": { 20 "value": "タイトル" 21 } 22 }, 23 "item02": { 24 "value": { 25 "apple": { 26 "value": 10 27 }, 28 "name": { 29 "value": 15 30 }, 31 "name1": { 32 "value": "箱" 33 }, 34 "itemId": { 35 "value": "1234567893" 36 }, 37 "itemName": { 38 "value": "タイトル" 39 } 40 } 41 } 42 } 43 } 44] 45
回答2件
あなたの回答
tips
プレビュー