我正在使用for循环来返回数组中的所有值...此时它将所有值都返回到字符串中但是我希望它们作为单独的值返回,所以我可以对每个值进行处理...继承我的代码到目前为止......
function generateSelectors(product) {
var i;
if( product.attrs.available == false) {
$('.variant-selectors, .buy-button').hide();
} else {
for (i = 0; i < product.attrs.options.length; i++) {
var options = '<p>' + product.attrs.options[i].values + '</p>';
}
}
$('.html').html(options);
}
输出为<div class="html"><p>3(36),4(37),5(38),6(39),7(40)</p></div>
我想要的是......
<div class="html">
<p>3(36)</p>
<p>4(37)</p>
etc…
</div>
在此先感谢,确定这相对容易。
答案 0 :(得分:1)
需要像下面这样做: -
function generateSelectors(product) {
var i;
var options =''; //define variable outside of loop
if( product.attrs.available == false) {
$('.variant-selectors, .buy-button').hide();
} else {
for (i = 0; i < product.attrs.options.length; i++) {
$.each(product.attrs.options[i].values ,function(key,val){//iterate over array
options += '<p>' + val + '</p><br/>'; //append each value to variable
});
}
}
$('.html').html(options); // add full-data as HTML to element
}
答案 1 :(得分:1)
您可能希望查看Array.prototype.map
- 这是一种功能性的方式,可以完成您尝试使用手动for
循环执行的操作
function generateSelectors(product) {
if (product.attrs.available == false) {
$('.variant-selectors, .buy-button').hide();
else
$('.html').html(
product.attrs.options.map(o => '<p>' + o.values + '</p>').join('')
)
}