Javascript if-else语句和JQuery

Javascript if-else语句和JQuery,javascript,jquery,if-statement,Javascript,Jquery,If Statement,我试图用if-else来缩短我的代码,而不是像我通常做的那样使用一大堆if语句,但是我在某个地方犯了一个错误,不明白我做错了什么。理想情况下,这段代码应该具有“postQuantity”字段,该字段的值为“选择围栏高度”、“选择围栏样式”、“选择纠察队大小”,然后是输入经过JQuery等式后的结果。如果有人能指出我做错了什么,我将不胜感激!非常感谢。下面是一个JSFIDLE-下面是代码: HTML: 有很多方法可以做到这一点。也许试试这样的- fenceCalculations = {

我试图用if-else来缩短我的代码,而不是像我通常做的那样使用一大堆if语句,但是我在某个地方犯了一个错误,不明白我做错了什么。理想情况下,这段代码应该具有“postQuantity”字段,该字段的值为“选择围栏高度”、“选择围栏样式”、“选择纠察队大小”,然后是输入经过JQuery等式后的结果。如果有人能指出我做错了什么,我将不胜感激!非常感谢。下面是一个JSFIDLE-下面是代码:

HTML:


有很多方法可以做到这一点。也许试试这样的-

fenceCalculations = {
    "sbs": function(args)
    {
        // do stuff
        // return size
    },
    "bnb": function(args)
    {
        // do stuff
        // return size
    }
}

var size = fenceCalculations[fenceStyle](args);

看起来您刚刚错过了在一些属性查询中添加“\ux”

//Quantity for Pickets          
$(document.body).on('keypress keydown keyup change', '[class^="footage"],[class^="fenceHeight"], [class^="picketSize"],[class^="fenceStyle"], [class^="picketQuantity"]', function() {

            var parts = $(this).attr('name').split("_");
                fenceNumber = parts[1],

                footage = parseFloat($(":input[name='footage_" + fenceNumber + "'" + ']').val(), 10),
                fenceHeight = $(":input[name='fenceHeight_" + fenceNumber + "'" + ']').find('option:selected').val(),
                fenceStyle = $(":input[name='fenceStyle_" + fenceNumber + "'" + ']').find('option:selected').val(),
                picketSize = $(":input[name='picketSize_" + fenceNumber + "'" + ']').find('option:selected').val(),              
                picketQuantity = $(":input[name='picketQuantity_" + fenceNumber + "'" + ']'),
                total = '';

        if (!isNaN(Number(fenceHeight))) {  
            if (fenceStyle == 'sbs') {
                 if (picketSize == '1x3.5x6' || picketSize == "1x4x6" || picketSize == "1x5x6") {
                    total = (((Math.ceil((footage * 12) / 3.5)) * 1.05));
                 } else if (picketSize == '1x5.5x6' || picketSize == "1x6x6") {
                    total = (((Math.ceil((footage * 12) / 5.5)) * 1.05));
                 } else {
                    total = "Select Picket Size";
                 }
                    picketQuantity.val(total);
            } else if (fenceStyle == 'bnb') {
                 if (picketSize == '1x3.5x6' || picketSize == "1x4x6" || picketSize == "1x5x6") {
                    total = (((Math.ceil((footage * 12) / 8.5)) * 3) * 1.05);
                 } else if (picketSize == '1x5.5x6' || picketSize == "1x6x6") {
                    total = (((Math.ceil((footage * 12) / 10.5)) * 3) * 1.05);
                 } else {
                    total = "Select Picket Size";
                 }
                    picketQuantity.val(total);
            } else {
                picketQuantity.val("Select Fence Style");
            }   
        } else {
            picketQuantity.val("Select Fence Height");
        }

}); 

你有什么迹象表明出了什么问题?当您在调试器中逐步完成此操作时,逻辑在哪一点上的行为不符合您的预期?错误操作的后果是什么?换句话说,我们需要知道与应该发生的情况相比,什么发生了/没有发生。Lol抱歉,它到达了输出为“选择围栏样式”的位置,仅此而已。无论我选择什么样式,即使我也选择了纠察样式,它也会一直说“选择围栏样式”。其思想是,当他们选择等式的每个组件时,他们会被提示选择下一个组件的值,直到JS拥有输出“纠察数量”所需的一切.EDIT-上面我指的是“postQuantity”,我本想指的是“picketQuantity”,但我不能编辑这个问题(我想因为人们已经开始回答了),facepalm我确信我在使用if-else语句,因为我很少使用它们。谢谢你指出这一点。
fenceCalculations = {
    "sbs": function(args)
    {
        // do stuff
        // return size
    },
    "bnb": function(args)
    {
        // do stuff
        // return size
    }
}

var size = fenceCalculations[fenceStyle](args);
//Quantity for Pickets          
$(document.body).on('keypress keydown keyup change', '[class^="footage"],[class^="fenceHeight"], [class^="picketSize"],[class^="fenceStyle"], [class^="picketQuantity"]', function() {

            var parts = $(this).attr('name').split("_");
                fenceNumber = parts[1],

                footage = parseFloat($(":input[name='footage_" + fenceNumber + "'" + ']').val(), 10),
                fenceHeight = $(":input[name='fenceHeight_" + fenceNumber + "'" + ']').find('option:selected').val(),
                fenceStyle = $(":input[name='fenceStyle_" + fenceNumber + "'" + ']').find('option:selected').val(),
                picketSize = $(":input[name='picketSize_" + fenceNumber + "'" + ']').find('option:selected').val(),              
                picketQuantity = $(":input[name='picketQuantity_" + fenceNumber + "'" + ']'),
                total = '';

        if (!isNaN(Number(fenceHeight))) {  
            if (fenceStyle == 'sbs') {
                 if (picketSize == '1x3.5x6' || picketSize == "1x4x6" || picketSize == "1x5x6") {
                    total = (((Math.ceil((footage * 12) / 3.5)) * 1.05));
                 } else if (picketSize == '1x5.5x6' || picketSize == "1x6x6") {
                    total = (((Math.ceil((footage * 12) / 5.5)) * 1.05));
                 } else {
                    total = "Select Picket Size";
                 }
                    picketQuantity.val(total);
            } else if (fenceStyle == 'bnb') {
                 if (picketSize == '1x3.5x6' || picketSize == "1x4x6" || picketSize == "1x5x6") {
                    total = (((Math.ceil((footage * 12) / 8.5)) * 3) * 1.05);
                 } else if (picketSize == '1x5.5x6' || picketSize == "1x6x6") {
                    total = (((Math.ceil((footage * 12) / 10.5)) * 3) * 1.05);
                 } else {
                    total = "Select Picket Size";
                 }
                    picketQuantity.val(total);
            } else {
                picketQuantity.val("Select Fence Style");
            }   
        } else {
            picketQuantity.val("Select Fence Height");
        }

});