Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS中带有数组的多个if语句_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript JS中带有数组的多个if语句

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

我使用以下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, ""), 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);