【问题标题】:Basic shopping cart - Why is my Radio button state referenced incorrectly?基本购物车 - 为什么我的单选按钮状态引用不正确?
【发布时间】:2015-09-10 23:54:54
【问题描述】:

我有一个用 jQuery 构建的非常简单的“购物车”。 (全部在一页上)。 您可以通过选中复选框来添加项目,并通过取消选中复选框来删除它们。但是复选框的状态没有被正确引用,因此我无法输入下面 if else 语句的“添加到购物车”部分:

$('#coreSetM').click(function()
{ 
    // Get the value of radio button
    var theMValue = $(this).attr("value");
    var theMPackage = $(this).attr("id");
    var theChecked = $(this).is(':checked');

    console.log("Value:"+theMValue+"\nPackage:"+theMPackage+"\nCheck Value:"+theChecked);

    if(theChecked==="false")
    {
        alert("False: "+theChecked);
        //do some add to cart stuff here with innerHTML
    }
    else
    {
        alert("True: "+theChecked)
        //do some remove from cart stuff here with innerHTML
    }
});

尽管控制台记录了以下内容:-

Value:118
Package:coreSetM
Check Value:false 

Value:118
Package:coreSetM
Check Value:true

它永远不会进入循环的第一部分......我不知道为什么,因为 theChecked 的值为“false”。 (在控制台输出中确定。)这是为什么?

【问题讨论】:

  • 最后一个括号后面缺少一个 )
  • 其实这只是部分代码..不过我按照建议编辑了。

标签: jquery checkbox radio-button shopping-cart


【解决方案1】:

缺少一个结束)

编辑:您正在使用 theChecked === 'false' 将布尔值与字符串进行比较。切换到theChecked === false,你应该没问题

更新小提琴:https://jsfiddle.net/t6rfwbaf/

【讨论】:

  • 对我来说很好,如小提琴所示。可能是我们看不到的冲突代码问题
【解决方案2】:

Triple-equal 是一种强比较,它也比较变量的类型。在您的代码中,您将布尔值与字符串进行比较。 Yuor if 语句将始终导致false

就这样做吧:

if(!theChecked)
{
    alert("False: "+theChecked);
    //do some add to cart stuff here with innerHTML
}
else
{
    alert("True: "+theChecked)
    //do some remove from cart stuff here with innerHTML
}

【讨论】:

  • 我已经有了那个代码,但它也不起作用..无论如何都是一样的。
  • 他的编辑是正确的。以您比较的方式,应该是theChecked === false,而不是'false'
  • 抱歉之后添加了解释。 true === "true" 将导致 false
  • 是的,“if(!theChecked)”代码由于某种原因不能与我的其他 jquery 代码一起使用。但是 cshanno 的解决方案确实如此,所以我选择了它作为接受的答案。谢谢大家。
  • 奇怪的是它没有。但是我猜无论什么都可以。 :)
猜你喜欢
  • 2021-05-10
  • 2018-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-18
相关资源
最近更新 更多