即使元素不存在,如何使javascript继续

时间:2017-05-31 10:51:16

标签: javascript jquery selectedindex

以下是我的问题:如果 #sizem 和/或 #sizedivided 上方的元素不存在,则以下代码停止工作。当产品不需要所述元素/ id时,电子商务商店会删除元素/ ID。

在我看来,只有在所有元素同时存在的情况下,代码才有效。 还有另一种方法可以做到这一点并避免代码停止吗? 如果用户在尝试购买/添加到购物篮时没有选择尺寸和/或颜色,则应该将其应用于带警报的下拉列表

$('#prod-buy').click(function(){

  if ($("#color")[0].selectedIndex <= 0) {
            alert("Select color");
            return false;
        }

  if ($("#sizem")[0].selectedIndex <= 0) {
            alert("Select size");
            return false;
        }         

  if ($("#sizedivided")[0].selectedIndex <= 0) {
            alert("Select size");
            return false;
        }      
});

2 个答案:

答案 0 :(得分:0)

你需要测试是否有元素。直接从你的代码中你可以做到这一点

$('#prod-buy').click(function(){

    if ($("#color")[0] && $("#color")[0].selectedIndex <= 0) {
        alert("Select color");
        return false;
    }

    if ($("#sizem")[0] && $("#sizem")[0].selectedIndex <= 0) {
        alert("Select size");
        return false;
    }         

    if ($("#sizedivided")[0] && $("#sizedivided")[0].selectedIndex <= 0) {
        alert("Select size");
        return false;
    }      

});

你试图访问它的一个属性(或未定义的属性)之前测试那个对象的方式。还有其他方法可以清理它,但需要对代码进行更多重组,从而隐藏了你的需求

答案 1 :(得分:0)

您应该检查每个元素是否存在。

使用jQuery使用length属性:

if($('#sizem').length) {
    if ($("#sizem")[0].selectedIndex <= 0) {
        alert("Select size");
        return false;
    }         
}