Javascript JS中带有数组的多个if语句
我使用以下JQuery代码:Javascript JS中带有数组的多个if语句,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我使用以下JQuery代码: (function($) { "use strict"; $( document ).ready(function() { var normalPrices = jQuery('.price-range .price .price') .map(function() { return parseFloat(jQuery(this).text(). replace(/[^0-9\.]+/g
(function($) {
"use strict";
$( document ).ready(function() {
var normalPrices = jQuery('.price-range .price .price')
.map(function() {
return parseFloat(jQuery(this).text().
replace(/[^0-9\.]+/g, ""), 10);
}).get();
if (normalPrices[0] < 300) {
var ifcBalance = normalPrices[0] / 18;
var m = parseFloat(ifcBalance).toFixed(2);
$('div.ifc-balance-div1')
.html('<p class="dynamic-badge-txt">Only £' + m + ' a month*</p>');
}
else {
$('div.ifc-balance-div1').hide();
}
if (normalPrices[1] < 300) {
var ifcBalance2 = normalPrices[1]/18;
var m2 = parseFloat(ifcBalance2).toFixed(2);
$('div.ifc-balance-div2')
.html('<p class="dynamic-badge-txt">Only £' + m2 + ' a month*</p>');
}
else {
$('div.ifc-balance-div2').hide();
}
if (normalPrices[2] < 300) {
var ifcBalance3 = normalPrices[2]/18;
var m3 = parseFloat(ifcBalance3).toFixed(2);
$('div.ifc-balance-div3')
.html('<p class="dynamic-badge-txt">Only £' + m3 + ' a month*</p>');
}
else {
$('div.ifc-balance-div3').hide();
}
});
})(jQuery);
请注意,我有三个容器,它们的类和结构与上面的相同
我有一种不好的感觉,我没有正确地引用数组中不同的
normalPrices
条目。有人能帮忙吗?看起来您只是在每个if
之间更改数组下标和ID值,为什么不使用循环呢
for(i = 0; i < max; i++) {
if (normalPrices[i] < 300) {
var ifcBalance = normalPrices[i] / 18;
^---
var m = parseFloat(ifcBalance).toFixed(2);
$('div.ifc-balance-div' + (i+1)).html('<p class="dynamic-badge-txt">Only £' + m + ' a month*</p>');
^^^^^^----
}
else {
$('div.ifc-balance-div' + (i+1)).hide();
^^^------
}
(i=0;i{
如果(正常价格[i]<300){
var ifcBalance=正常价格[i]/18;
^---
var m=解析浮点(ifcBalance).toFixed(2);
$('div.ifc-balance-div'+(i+1)).html('p class=“dynamic badge txt”>一个月仅为“+m+”*”);
^^^^^^----
}
否则{
$('div.ifc-balance-div'+(i+1)).hide();
^^^------
}
Number(当使用数组时,始终建议使用循环语句在数组上迭代。您的代码测试是否有效:
(function($) {
"use strict";
$( document ).ready(function() {
console.log("load called");
var oldPrices = jQuery('.old-price .price .price').map(function() { return parseFloat(jQuery(this).text().replace(/[^0-9\.]+/g, ""), 10);}).get();
var specialPrices = jQuery('.special-price .price .price').map(function() {return parseFloat(jQuery(this).text().replace(/[^0-9\.]+/g, ""), 10);}).get();
var normalPrices = jQuery('.price-range .price .price').map(function() {return parseFloat(jQuery(this).text().replace(/[^0-9\.]+/g, ""), 10);}).get();
for ( var i=0 ;i < normalPrices.length ; ++i ){
if (Number(normalPrices[i]) < 300) {
var ifcBalance = Number(normalPrices[i]) / 18;
var m = parseFloat(ifcBalance).toFixed(2);
$('div.ifc-balance-div' + (i+1) ).html('<p class="dynamic-badge-txt">Only £' + m + ' a month*</p>');
}
else {
$('div.ifc-balance-div'+ (i+1)).hide();
}
}
});
})(jQuery);
(函数($){
“严格使用”;
$(文档).ready(函数(){
log(“加载调用”);
var oldPrices=jQuery('.old price.price.price').map(函数(){return parseFloat(jQuery(this.text().replace)(/[^0-9\.]+/g,”),10);}).get();
var specialPrices=jQuery('.special price.price.price').map(函数(){return parseFloat(jQuery(this.text().replace)(/[^0-9\.]+/g,”),10);}).get();
var normalPrices=jQuery('.price range.price.price').map(函数(){return parseFloat(jQuery(this.text().replace)(/[^0-9\.]+/g,”),10);}).get();
对于(变量i=0;i一个月仅为“+m+”*”);
}
否则{
$('div.ifc-balance-div'+(i+1)).hide();
}
}
});
})(jQuery);
show…如果价格高于300,当normalPrices[x]>=300时,你的else语句会隐藏div,这正是我想要做的,但不是对所有的价格都这样,如果其中一个价格低于300,其余的价格超过300,我仍然想向另一个价格高于300的价格显示我使用newPrice的原因[0],newPrice[1],newPrice[2]是因为在将字符串转换为float并将其转换为数组时,我需要确保如果第一个元素的当前价格低于300,那么它将不会显示在第一个元素上。我已经用数字()更新了包装normalPrices[I]的代码函数,如果我理解你的评论@NDI得到了逻辑并且看起来很棒…但是它不能从var ifcBalance=正常价格[i]进行计算/18;已更新,请重试。您更新了什么,因为它返回了相同的结果。它确实出现在所有三个屏幕上,尽管并非所有屏幕都小于300。上面的代码不起作用。我遵循的逻辑是:在float中转换当前价格>检查它是否大于show message 300。否则,请隐藏ht毫升
(function($) {
"use strict";
$( document ).ready(function() {
console.log("load called");
var oldPrices = jQuery('.old-price .price .price').map(function() { return parseFloat(jQuery(this).text().replace(/[^0-9\.]+/g, ""), 10);}).get();
var specialPrices = jQuery('.special-price .price .price').map(function() {return parseFloat(jQuery(this).text().replace(/[^0-9\.]+/g, ""), 10);}).get();
var normalPrices = jQuery('.price-range .price .price').map(function() {return parseFloat(jQuery(this).text().replace(/[^0-9\.]+/g, ""), 10);}).get();
for ( var i=0 ;i < normalPrices.length ; ++i ){
if (Number(normalPrices[i]) < 300) {
var ifcBalance = Number(normalPrices[i]) / 18;
var m = parseFloat(ifcBalance).toFixed(2);
$('div.ifc-balance-div' + (i+1) ).html('<p class="dynamic-badge-txt">Only £' + m + ' a month*</p>');
}
else {
$('div.ifc-balance-div'+ (i+1)).hide();
}
}
});
})(jQuery);