I am working on the following demo. Why am I not able to get the result of a function assigned to a variable?
var cartssku = function() { $(".cart").each(function() { skus = []; skus.push($(this).data('sku')); return skus.join(); }); }; console.log(cartssku);
.cart { background: gold; height: 40px; width: 100%; margin: 6px; padding: 6px; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="cart" data-sku="mt-01"> Cart SKU I</div> <div class="cart" data-sku="mt-02"> Cart SKU II</div> <div class="cart" data-sku="mt-03"> Cart SKU III</div>
var cartssku = function() { var skus = []; $(".cart").each(function() { skus.push($(".cart").data('sku')); }); return skus.join() }; console.log(cartssku());
.cart { background: gold; height: 40px; width: 100%; margin: 6px; padding: 6px; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="cart" data-sku="mt-01"> Cart SKU I</div> <div class="cart" data-sku="mt-02"> Cart SKU II</div> <div class="cart" data-sku="mt-03"> Cart SKU III</div>
First remove the first and last statements from inside the .each()
method; initializing belongs before the .each()
method and return
belongs after as shown below. Then call the function by appending ()
as shown:
var cartssku = function() { var skus = []; $(".cart").each(function() { skus.push($(this).data('sku')); }); return skus.join(); }; console.log( cartssku() );
.cart { background: gold; height: 40px; width: 100%; margin: 6px; padding: 6px; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="cart" data-sku="mt-01"> Cart SKU I</div> <div class="cart" data-sku="mt-02"> Cart SKU II</div> <div class="cart" data-sku="mt-03"> Cart SKU III</div>
Alternatively, you can use the jQuery .map()
method as in the demo below:
var cartssku = function() { return $(".cart").map(function() { return $(this).data('sku'); }).get().join(); }; console.log( cartssku() );
.cart { background: gold; height: 40px; width: 100%; margin: 6px; padding: 6px; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="cart" data-sku="mt-01"> Cart SKU I</div> <div class="cart" data-sku="mt-02"> Cart SKU II</div> <div class="cart" data-sku="mt-03"> Cart SKU III</div>
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.