2016-10-09 3 views
1

私はkey:valueペアを使用してローカルストレージに保存しようとしているいくつかの値を持っています。私は、これはフィドルキー値ペアのランダム変数が変数として解釈されない

https://jsfiddle.net/ps4xs60x/27/

とコード

$(document).ready(function() { 
$(document).on('click', '.btn-primary', function(){ 
var num = Math.random(); 
     $('.table tbody').append('<tr class="child"><td>one</td><td><button id="'+num+'" onClick="ae(this.id); function ae(clicked_id) {var items = []; var entry = {\'num\': clicked_id}; items.push(entry);localStorage.setItem(\'entry\',JSON.stringify(items));alert(localStorage.getItem(\'entry\',JSON.stringify(items)));}" type="button" class="invite ">Invite</button></td></tr>'); 
     }); 
}); 

どのようにできているkeyMath.random()からランダムな値にしたいが、私の値を変数

として見られていません私はnumを変数とみなしていますか?

+0

なぜあなたはnumが変数として見なされないと思いますか?あなたのコードは、その面で絶対にうまく動作します。 – Syntac

+0

@ Syntac私は '' num "'ではない数字を期待しています。 –

+0

@charlietfl小数点もうまくいきます。 –

答えて

2

免責事項:

そうのlocalStorageは、これらのスニペットにはあまり動作しますが、以下のコードまたはthis forked fiddleは表示されません。

コードは

    onClick属性のうち、機能 ae()を移動し、通常のJS関数として定義
  1. 変更します。
  2. とすると、それぞれの数字がlocalStorage要素entry配列にクリックされたの配列を追加すると、新しい配列を作成する代わりにjson(設定されている場合)として解析する必要があります。
  3. 代わりのonclick属性を使用して、あなたはクラス名btn-primaryを持つ要素のためにやっているのと同じように、クラス名inviteを持つ要素のクリックハンドラを追加...

function ae(event) { 
 
    var items = JSON.parse(localStorage.getItem('entry')); 
 
    if (items == null || typeof items !== 'object') { 
 
     items = []; 
 
    } 
 
    var entry = { 
 
    'num': event.target.id 
 
    }; 
 
    items.push(entry); 
 
    localStorage.setItem('entry', JSON.stringify(items)); 
 
    alert(localStorage.getItem('entry')); 
 
} 
 
$(document).ready(function() { 
 
    $(document).on('click', '.invite', ae); 
 
    $(document).on('click', '.btn-primary', function() { 
 
    var num = Math.random(); 
 
    $('.table tbody').append('<tr class="child"><td>one</td><td><button id="' + num + '"type="button" class="invite ">Invite</button></td></tr>'); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table class="table"> 
 
    <tbody></tbody> 
 
</table> 
 

 
<button class="btn-primary">Add Row 
 
</button>

関連する問題