【问题标题】:Having trouble returning the correct values for one element in this function无法为该函数中的一个元素返回正确的值
【发布时间】:2013-04-05 06:45:46
【问题描述】:

我无法让'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');
    }
  }    
});

【问题讨论】:

  • 你没有设置'衬里'文本的值。

标签: jquery get set


【解决方案1】:

var hasLining函数检查[name=Lining]的值是否为“0”,当[name=Lining]字段为空或0以外的任何值时它总是返回true,当它的值为0时它会返回false,

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

如果您想根据衬里是否为空来获得结果。换var hasLining

return lining != ""

并将条件更改为

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

【讨论】:

  • 那行得通 :-D 你介意向我解释一下你使用'return lining != ""' 的格式,以便我知道如何将它应用到其他情况吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-10
  • 2016-02-07
  • 1970-01-01
相关资源
最近更新 更多