var wishlist = Array(10);
$(document).ready(function(){
//wishlist = JSON.parse($.cookie('wishlist') || '{}');
wishlist = JSON.parse(localStorage.getItem("wishlist") || '{}');
if(wishlist != null){
$.each(wishlist, function(index, name){
$('#wishlist').append($('<li>').val(index).text(name));
});
}
else
wishlist = {};
});
function myFunction(selectedElement) {
var data_id = selectedElement.getAttribute("data-id");
var data_name = $(".add-to-cart[data-id *= "+data_id+" ]").attr('data-name');
if(!wishlist.hasOwnProperty(data_id)){
wishlist[data_id] = data_name;
$('#wishlist').append($('<li>').val(data_id).text(data_name));
//$.cookie('wishlist', JSON.stringify(wishlist));
localStorage.setItem("wishlist",JSON.stringify(wishlist));
//document.cookie = (wishlist);
console.log($.cookie('wishlist'));
console.log(wishlist);
}
else{
$('#wishlist li[value *= '+data_id+']').remove();
delete wishlist[data_id];
localStorage.setItem("wishlist",JSON.stringify(wishlist));
}
//alert('Element already present');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
<html>
<div>
<ul>
<li><a class="add-to-cart" href="#" data-name="Apple" data-id="1" data-price="1.22" >Apple $1.22</a><button onclick="myFunction(this)" data-id="1">Try it</button></li>
<li><a class="add-to-cart" href="#" data-name="Banana" data-id="2" data-price="1.33">Banana $1.33</a><button onclick="myFunction(this)" data-id="2">Try it</button></li>
<li><a class="add-to-cart" href="#" data-name="Shoe" data-id="3" data-price="22.33">Shoe $22.33</a><button onclick="myFunction(this)" data-id="3">Try it</button></li>
<li><a class="add-to-cart" href="#" data-name="Frisbee" data-id="4" data-price="5.22">Frisbee $5.22</a><button onclick="myFunction(this)" data-id="4">Try it</button></li>
</ul>
</div>
<ul id="wishlist">
</ul>
<html>
It is getting only apple because in following code you are using [0]
index which is apple.
var x = document.getElementsByClassName("add-to-cart")[0].getAttribute("data-name");
Update:
Use following function:
function myFunction(callingElement) {
var data_id = $(callingElement).attr('data-id');
var x = $(".add-to-cart[data-id *= "+data_id+" ]").attr('data-name');
alert(x);
document.getElementById("show-fav").innerHTML = x;
}
and add this
to your function argument in onClick
.
<button onclick="myFunction(this)" data-id="1">Try it</button>
Hers's the fiddle: https://jsfiddle.net/fs8L366m/
Update 2:
<script>
var wishlist = Array(10);
$(document).ready(function(){
//wishlist = JSON.parse($.cookie('wishlist') || '{}');
wishlist = JSON.parse(localStorage.getItem("wishlist") || '{}');
if(wishlist != null){
$.each(wishlist, function(index, name){
$('#wishlist').append($('<li>').val(index).text(name));
});
}
else
wishlist = {};
});
function myFunction(selectedElement) {
var data_id = selectedElement.getAttribute("data-id");
var data_name = $(".add-to-cart[data-id *= "+data_id+" ]").attr('data-name');
if(!wishlist.hasOwnProperty(data_id)){
wishlist[data_id] = data_name;
$('#wishlist').append($('<li>').val(data_id).text(data_name));
//$.cookie('wishlist', JSON.stringify(wishlist));
localStorage.setItem("wishlist",JSON.stringify(wishlist));
//document.cookie = (wishlist);
console.log($.cookie('wishlist'));
console.log(wishlist);
}
else{
$('#wishlist li[value *= '+data_id+']').remove();
delete wishlist[data_id];
localStorage.setItem("wishlist",JSON.stringify(wishlist));
}
//alert('Element already present');
}
</script>