在JS中使用数组的多个if语句

时间:2015-11-09 22:00:46

标签: 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, ""), 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[0]normalPrices[1]normalPrices[3]等我尝试设置if语句,只有在Price高于300时才显示相关的div元素。将其设置为使用上面的代码只选取第一个div并隐藏其余两个。这里有趣的是第一个div甚至不超过300.

我得到价格的HTML是动态的,但静态表示看起来像这样:

    <div class="price-box">
    <p class="old-price"><span class="price-label">Was</span> <span class=
    "price" id="old-price-12121"><span class="price"><span class=
    "currency">£</span>399</span></span></p>
    <p class="special-price"><span class="price-label">You Save</span>
    <span class="price" id="price-excluding-tax-12121"><span class=
    "price"><span class="currency">£</span>50</span></span></p>
</div>
<div class="price-range">
            <span class="price-label">From </span>
        <span class="price"><span class="price"><span class="currency">£</span></span></span>
</div>

请注意,我有三个容器,其类别和结构与上面相同

我有一种不好的感觉,我没有正确引用数组中不同的normalPrices条目。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

看起来你只是在每个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();
                                ^^^------
    }

答案 1 :(得分:0)

Number(使用数组时,总是建议使用循环语句对数组进行迭代。如果有效,则进行代码测试:

class MyClass():
  def __init__(self):
    # some code here

class MyClassContainer():
  def __init__(self):
    self.container = [] # will store MyClass object instances.
  def Add(self, object):
    self.container.append(object)
  def Remove(self, object):
    self.container.remove(object)

example = MyClassContainer()

myclass1 = MyClass()
example.Add(myclass1)

myclass2 = MyClass()
example.Add(myclass2)

example.Remove(myclass1)