2016-10-09 52 views
1

我有一些值,我试图使用key:value对存储在本地存储中。我想keyMath.random()一个随机值,但我的价值不被视为一个变量键值对中的随机变量不解释为变量

这是小提琴

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>'); 
     }); 
}); 

哪有我让num被视为一个变量?

+0

你为什么假设,num不被视为一个变量?你的代码在这方面工作得很好。 – Syntac

+0

@Syntac我期待的数字不是''num“' –

+0

@charlietfl小数点也可以。 –

回答

2

免责声明:

所以localStorage的不工作在这些片段这么多,但看到下面或this forked fiddle代码。

代码更改

  1. 移动功能ae()onClick属性,并把它定义为一个普通JS功能。
  2. 假设你想要每个数字点击到localStorage元素entry数组,然后你需要解析为每次json(如果它被设置),而不是做一个新的数组。
  3. 除了使用onclick属性,添加一个单击处理程序与类名invite的元素,就像你正在做的与类名btn-primary元素...

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>