each()函数返回Null或Objects

时间:2010-11-15 08:36:12

标签: javascript jquery css

嗨,我是编程的新手,我正在努力学习并使其与每个()一起工作。忍受我。我尽力向你和你学习。

  1. 我正在尝试在目录中查看特定价格的每件商品:原件和从页面销售。
  2. 然后计算折扣百分比
  3. 打印折扣%
  4. 检查以比较背景颜色的百分比:棕色,黄色和红色。
  5. 现在,我测试每一行以查看它是否有效。 salecost = $(this).find('#sale').html();在显示带有美元符号的金额之前返回一些空值。很奇怪无法想出那一个。 Replace()无法正常工作 - 无法使其正常工作。它应该删除美元符号。

    另外,我不确定比较如何 - 我是否正确地写了声明?

    提前感谢您的帮助

    var salecost;
    var originalcost;
    var percentDiscount;
    var percent; 
    
    function calculate(sale, original)
     {
      percentDiscount = eval((sale/original)*100);
            document.getElementById("percentoff").innerHTML=parseInt(percentDiscount) + '%';       
     }
    
    $(document).ready(function(index){
    
               $('.item').each(function(){     
                salecost = $(this).find('#sale').html();
                salecost = salecost.replace(/[^\d\.]/g,"");
                alert (salecost);
                 originalcost = $('#sale').html();
                 originalcost = originalcost.replace(/[^\d\.]/g,"");
                 alert (originalcost);
                 percent = calculate(salecost,originalcost);
                 alert(percent);
    
                   if(percent<30)
                   {
                           $("div#percentoff").css({"background-color":"brown", "padding":"5px 0"});
                   }
    
                   if(percent<50){
                           $("div#percentoff").css({"background-color":"yellow", "padding":"5px 0"});
                   }
    
                   if(percent<70){
                           $("div#percentoff").css({"background-color":"red", "padding":"5px 0"});
                   }
           });
    });
    

2 个答案:

答案 0 :(得分:2)

这不是必需的

$(this).find('#sale').html();

您可以使用

替换它
$("#sale").html();

因为id在文档中是唯一的。如果您有多个具有相同ID的元素,那么您的HTML无效。

修改

从span标记中删除id。

<span class="price">S$319</span>

这将在父div中找到类名为price的所有跨度[此处仅为1]。无需在此处使用.html(),您可以使用.text()

$(this).find('span.price').text();

答案 1 :(得分:1)

  1. 您应该将var语句移动到每个函数中,这样它们就不是全局的。
  2. 你不需要eval,(促销/原创)* 100将自行运作。
  3. 最好使用一致的样式,你的计算函数可以用jquery编写。

    $(“#percentoff”)。html(percentDiscount)+'%');

  4. 在javascript中大多数情况下都不需要进行强制转换,将数字与字符串连接会产生字符串。

  5. 您的计算函数应为return percentDiscount;
  6. 不使用.css(),最好使用.addClass,这样很容易用.removeClass撤消,样式就是样式表,你可以使用jquery选择带有类的元素。 / LI>