以下是我的问题:如果 #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;
}
});
答案 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;
}
}