I have a shopping cart icon from FontAwesome in which I want to assign the sum of items selected from inputs. I’ve added the number of items using a JavaScript function but I can’t manage to show this number into the icon content.
The content value of the icon is taken from the HTML attribute value="" as specified in the CSS content:attr(value).
How can I modify it to be the value of the JavaScript variable totalQty?
I used document.getElementsByClassName("badge").value = totalQty; but it doesn’t work.
Here is my code:
.badge:after {
content: attr(value);
font-size: 12px;
color: #fff;
background: red;
border-radius: 50%;
padding: 0 5px;
position: relative;
left: -8px;
top: -10px;
opacity: 0.9;
}<i class="fa badge fa-lg" id="card-qty" value=""></i>
Advertisement
Answer
You can do it with js by targeting the ID instead of the class and do it like this:
var totalQty = 5;
var elementVar = document.getElementById("card-qty");
elementVar.setAttribute("value", totalQty);
So here it is working.
var totalQty = 5;
var elementVar = document.getElementById("card-qty");
elementVar.setAttribute("value", totalQty);.badge:after {
content: attr(value);
font-size: 12px;
color: #fff;
background: red;
border-radius: 50%;
padding: 0 5px;
position: relative;
left: -8px;
top: -10px;
opacity: 0.9;
}<i class="fa badge fa-lg" id="card-qty" value=""></i>
EDIT: If you are set on getting the elements by class instead of ID you can use this js code:
var totalQty = 5;
const elementVar = document.getElementsByClassName("badge");
let index = 0;
while (index < elementVar.length) {
elementVar[index].setAttribute("value", totalQty);
index++
}
Here it is working:
var totalQty = 5;
const elementVar = document.getElementsByClassName("badge");
let index = 0;
while (index < elementVar.length) {
elementVar[index].setAttribute("value", totalQty);
index++
}.badge:after {
content: attr(value);
font-size: 12px;
color: #fff;
background: red;
border-radius: 50%;
padding: 0 5px;
position: relative;
left: -8px;
top: -10px;
opacity: 0.9;
}<i class="fa badge fa-lg" id="card-qty" value=""></i>