无法在此函数中返回一个元素的正确值

时间:2013-04-05 06:45:47

标签: jquery get set

我无法让'var hasLining'功能正常工作。应该返回“0”或“1”,具体取决于是否有衬里。我无法弄清楚为什么,但它导致函数总是返回错误的答案(我不确定究竟发生了什么,但看起来它给出了下一个等式的值)。

我发布了一个小提示来证明问题:jsfiddle.net/chayacooper/9NKjT/1

var isThickerFabric = function() {
  var item = $("[name=Item]").val();
  return item == "Blazer" || item == "Jacket" || item == "Outerwear";
}
var hasLining = function() {
  var lining = $("[name=Lining]").val();
  return lining != "0";
}

$("[name=Item],[name=Fabric_Type],[name=Lining]").change(function(){  
  if ( $("[name=Fabric_Type]").val() === "Satin" ) {
    var fabricThicknessElement = $('[name=Fabric_Thickness]');

    if ( isThickerFabric() && !hasLining || !isThickerFabric() && hasLining ) {
      fabricThicknessElement.val('2');
    } else if ( isThickerFabric() && hasLining() ) {
      fabricThicknessElement.val('3');
    } else {
      fabricThicknessElement.val('1');
    }
  }    
});

1 个答案:

答案 0 :(得分:0)

var hasLining函数检查[name=Lining]是否具有值“0”,当[name=Lining]字段为空时,它总是返回true,或者除了0之外的任何值,它将返回false值为0,

这就是为什么它总是得到fabricThicknessElement 3的值,因为它总是得到一个真实的形式var hasLining

如果你想根据衬里是否为空来得到结果。更改var hasLining

return lining != ""

并将条件更改为

if ((isThickerFabric() && !hasLining()) || (!isThickerFabric() && hasLining()))