Javascript 返回Null或Null对象的每个()函数

Javascript 返回Null或Null对象的每个()函数,javascript,jquery,css,Javascript,Jquery,Css,您好,我是编程新手,我正在努力学习并使其与each()配合使用。请容忍我。我尽我最大的努力向这里和你学习 我试图通过目录中每种产品的具体价格:无论是原版还是从页面销售 然后计算折扣的百分比 打印折扣% 选中以比较背景颜色的百分比:棕色、黄色和红色 现在,我测试每一行,看看它是否有效。 salecost=$(this).find('#sale').html()在显示带美元符号的金额之前返回几个空值。奇怪的是我想不出来。Replace()工作不正常-无法使其工作。它应该去掉美元符号 而且,我不确定它

您好,我是编程新手,我正在努力学习并使其与each()配合使用。请容忍我。我尽我最大的努力向这里和你学习

  • 我试图通过目录中每种产品的具体价格:无论是原版还是从页面销售
  • 然后计算折扣的百分比
  • 打印折扣%
  • 选中以比较背景颜色的百分比:棕色、黄色和红色 现在,我测试每一行,看看它是否有效。
    salecost=$(this).find('#sale').html()在显示带美元符号的金额之前返回几个空值。奇怪的是我想不出来。Replace()工作不正常-无法使其工作。它应该去掉美元符号

    而且,我不确定它与compare的关系如何——我写的语句正确吗

    提前谢谢你的帮助

    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"});
                   }
           });
    });
    
    var-salecost;
    原始成本;
    var百分比折扣;
    风险值百分比;
    功能计算(销售,原件)
    {
    百分比折扣=评估((销售/原件)*100);
    document.getElementById(“percentoff”).innerHTML=parseInt(percent折扣)+'%';
    }
    $(文档).ready(函数(索引){
    $('.item')。每个(函数(){
    salecost=$(this.find('#sale').html();
    salecost=salecost.replace(/[^\d\.]/g,”);
    警报(销售成本);
    originalcost=$('#sale').html();
    原始成本=原始成本替换(/[^\d\.]/g,”);
    警报(原始成本);
    百分比=计算(销售成本、原始成本);
    警报(百分比);
    如果(百分比这不是必需的

    $(this).find('#sale').html();
    
    您可以使用

    $("#sale").html();
    
    因为id在文档中是唯一的。如果有多个元素具有相同的id,则HTML无效

    编辑

    从span标记中删除id

    <span class="price">S$319</span>
    
    这不是必需的

    $(this).find('#sale').html();
    
    您可以使用

    $("#sale").html();
    
    因为id在文档中是唯一的。如果有多个元素具有相同的id,则HTML无效

    编辑

    从span标记中删除id

    <span class="price">S$319</span>
    
  • 您应该将var语句移动到each函数中,这样它们就不是全局的
  • 您不需要向您提供评估,(销售/原件)*100将自行完成
  • 最好使用一致的样式,您的计算函数可以使用jquery编写

    $(“#百分比折扣”).html(百分比折扣)+'%')

  • 在javascript中,大多数情况下不需要强制转换,将数字与字符串连接将生成字符串

  • 您的计算函数应该
    返回百分比折扣;
  • 与其使用.css(),不如使用.addClass,这样可以很容易地用.removeClass撤消,样式是样式表中的所有元素,您可以使用jquery来选择类中的元素
  • 您应该将var语句移动到each函数中,这样它们就不是全局的
  • 您不需要向您提供评估,(销售/原件)*100将自行完成
  • 最好使用一致的样式,您的计算函数可以使用jquery编写

    $(“#百分比折扣”).html(百分比折扣)+'%')

  • 在javascript中,大多数情况下不需要强制转换,将数字与字符串连接将生成字符串

  • 您的计算函数应该
    返回百分比折扣;
  • 与其使用.css(),不如使用.addClass,这样可以很容易地用.removeClass撤消,样式是样式表中的所有元素,您可以使用jquery来选择类中的元素


  • 您好,谢谢您的快速回复。我已经尝试了$(“#sale”).html()但它只显示每个产品的一个价格,但也适用于其他产品。那么如何绕过它呢?您可以为此使用类名。如果我们可以看到一些html,这会有所帮助。ID是唯一的,因此听起来
    \sale
    应该是
    。sale
    。你好,谢谢generalhenry。我复制了html。我正在使用购物车软件。看It’好像你应该用.price and use.actualprice来代替销售,以找到原始价格。谢谢你的快速回复。我已经尝试了$(“#sale”).html()但它只显示每个产品的一个价格,但也适用于其他产品。那么如何绕过它呢?您可以为此使用类名。如果我们可以看到一些html,这会有所帮助。ID是唯一的,因此听起来
    \sale
    应该是
    。sale
    。你好,谢谢generalhenry。我复制了html。我正在使用购物车软件。看It’好像应该用.price和use.actualprice替换#sale来查找原始价格您有多个具有相同ID的项目。这是错误的。为每个元素指定唯一ID并使用类,例如,然后:$(this).find('.sale').html()应该可以。你也可以发布你的HTML代码吗?这是一个发布代码的好地方,这样我们就可以在actioncool中看到它了。从来没有听说过JSFIDLE。谢谢。@Shadow_Wizard@generalhenry@rahul-谢谢大家。我让它像你们看到的那样工作。但是当我复制代码并将其粘贴到本地开发人员的文件中时,它不再工作了,所以我去了error cofirefox上的NSLE-它说salecost为null。我不确定是什么原因导致salecost为null?任何细节都将不胜感激。谢谢您,您有多个具有相同ID的项。这是错误的。请为每个元素指定唯一ID,并改为使用类,例如,然后:$(this)。查找('.sale').html()应该可以。你也可以发布你的HTML代码吗?这是一个发布代码的好地方,这样我们就可以在actioncool中看到它了。从来没有听说过JSFIDLE。谢谢。@Shadow_Wizard@generalhenry@rahul-谢谢大家。我让它像你们看到的那样工作。但是当我复制代码并将其粘贴到本地开发人员的文件中时,它不再工作了,所以我去了error cofirefox上的NSLE-它说salecost为空。我不确定是什么原因导致salecost为空?任何洞察都将不胜感激。感谢您,只有销售和