Почему dataset передает не всю строку?
Через data-name пытаюсь передать передать название продукта в корзину покупателя. Если, например, название, которое надо передать "Ананас Голд большой Коста-Рика ~1,7 кг", то мне через dataset.name приходит только "Ананас". Почему передает только первое слово?
div_card.innerHTML = "<div class='card'>\
<img src="+image+" class='card-img-top'>\
<div class='card-body'>\
<h5 class='card-title'>"+product_name+"</h5>\
<p class='card-text'>"+price+" руб</p>\
<button type='button' class='btn btn-outline-primary' \
data-id="+id+" data-name="+product_name+" \
data-price="+price+" \
onclick='add_to_cart(this.dataset.id, this.dataset.name, \
this.dataset.price)'>\
Добавить в корзину\
</button>\
</div>\
</div>";
<script>
function add_to_cart(id, product_name, price){
console.log(product_name); // Выведет "Ананас", а не "Ананас Голд большой Коста-Рика ~1,7 кг"
let ul = document.getElementById('shoping_cart_list');
let li = document.createElement('li');
li.innerHTML = product_name;
ul.appendChild(li);
}
</script>
Ответы (1 шт):
Автор решения: De.Minov
→ Ссылка
Как уже подсказали в комментариях, используйте для этого шаблонные строки
div_card.innerHTML = `
<div class="card">
<img src="${image}" class="card-img-top">
<div class="card-body">
<h5 class="card-title">${product_name}</h5>
<p class="card-text">${price} руб</p>
<button type="button" class="btn btn-outline-primary"
data-id="${id}"
data-name="${product_name}"
data-price="${price}"
onclick="add_to_cart(this.dataset.id, this.dataset.name, this.dataset.price)">Добавить в корзину</button>
</div>
</div>`;