2017-06-18 10 views
0

私はこのようになりますlist.jsというファイルにJSONオブジェクトを持っている - >のJavaScript/jQueryの/ JSONスプライス多次元配列の明確化

var jsonData = [ 
    { 
    name: "Friends", 
    items: [ 
     { 
     name: "Steve", 
     job: "pro bowler", 
     size: "tall", 
     description: "Steve's my man!" 
     }, 
     { 
     name: "Jessica", 
     job: "HR", 
     size: "average", 
     description: "a dear friend" 
     } 
    ] 
    }, 
    { 
    name: "Co-Workers", 
    items: [ 
     { 
     name: "Martin", 
     job: "my boss", 
     size: "tall", 
     description: "I don't like him" 
     }, 
     { 
     name: "Susan", 
     job: "Intern", 
     size: "average", 
     description: "It's not like I have a crush on her or anything..." 
     } 
    ] 
    } 
] 

と私がいることを、その上にデータを持つことになりますWebページを持っていますJSONの最初の要素に、私は、ボタンのクリックで撮影したデータを追加するためにスプライス()を使用しようとしています>

<!DOCTYPE html> 
<html> 
<head> 
    <script type="text/javascript" src="list.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
    <title></title> 
</head> 
<body> 
    <table> 
     <tr> 
      <td> 
       <table> 
        <tr><td>Name</td><td class="name">Jenkins</td></tr> 
        <tr><td>Job</td><td class="job">Accountant</td></tr> 
        <tr><td>Size</td><td class="size">Small</td></tr> 
       </table> 
      </td> 
      <td class="description">average joe.</td> 
      <td> 
       <button class="learn">Learn</button> 
      </td> 
     </tr> 
    </table> 


    <script type="text/javascript"> 
     $(".learn").click(function(){ 


     var data = { 

      // captures the information relevent to the button in a key-value array 
      name: $(this).closest("table").find(".name").text(), 
      job: $(this).closest("table").find(".job").text(), 
      size: $(this).closest("table").find(".size").text(), 
      description: $(this).closest("td").siblings(".description").text() 
     } 

     console.log(data); 

     jsonData[0].items.splice(0, 0, { 
      name: $(this).closest("table").find(".name").text(), 
      job: $(this).closest("table").find(".job").text(), 
      size: $(this).closest("table").find(".size").text(), 
      description: $(this).closest("td").siblings(".description").text() 
     }); 
    }); 
    </script> 

</body> 
</html> 

(あなたが後でコンソールでそれを見ることができます) - このようになりますオブジェクトの「items」セクション。私が間違っていることを理解する助けが必要なので、助言をいただければ幸いです。ありがとうございました。

+0

ここでコードが機能しています。キャプチャしたデータをitemsセクションのJSONオブジェクトの最初の要素に追加すると、list.jsのJsonData変数にアクセスできますか? –

+0

希望の出力は何ですか? –

+0

@DanPhilip私はlist.js内のitemsセクションの "friends"の下に "jenkins"、 "accountant"、 "small"、 "average joe"の情報を持つ要素があることを確認したいと思います。 – laroy

答えて

0

純粋なJavaScriptまたはjQueryだけでは、ローカルJSONファイルにデータを保存することはできません。あなたはそれを行うためにサーバー側のスクリプトが必要です。それ以外のコードはうまくいきます。

+0

私はそれをどのように達成するでしょうか? – laroy