Tôi đang nhận được giá trị từ một trường văn bản. Tôi có một nếu và một số khác nếu tuyên bố.
Vấn đề cuối cùng nếu không thực thi ngay cả khi điều kiện là đúng.
Nếu tôi thay đổi cái cuối cùng nếu nếu nó thực hiện và cảnh báo. Khi tôi thay đổi điều đó trở lại thành khác nếu câu lệnh không thực thi. Cái khác nếu trước đó là tốt vì nó bắn/thực hiện trên một điều kiện cụ thể.
function Valcheck[]
{
var txtVal = document.getElementById["sometextField"].value;
if[txtVal =="%"]
{
alert["% is only allowed with other characters."];
return;
}
else if[txtVal.indexOf["%"] != -1]
{
if[[txtVal.indexOf['%']] != [txtVal.length-1]]
{
alert[" % is only allowed at the end."];
return;
}
}
else if[txtVal.indexOf[","] != -1]
{
alert["Comma or comma separated values are not allowed."];
return;
}
else if[[ txtVal.length >0] && [txtVal.indexOf["%"] == -1]]
{
alert["Please enter % at the end of the value."];
return;
}
else if[ txtVal.length > 11 ]
{
alert[" Value can't be greater than 11 characters."];
return;
}
}
Xin vui lòng giúp đỡ. Cảm ơn
Rustam
1.8452 huy hiệu vàng16 Huy hiệu bạc33 Huy hiệu đồng2 gold badges16 silver badges33 bronze badges
Hỏi ngày 11 tháng 1 năm 2012 lúc 1:00Jan 11, 2012 at 1:00
0
Vấn đề là nếu txtVal.length > 11
, thì điều này được đáp ứng:
else if[txtVal.indexOf["%"] != -1]
Hoặc điều này được đáp ứng:
else if[[ txtVal.length >0] && [txtVal.indexOf["%"] == -1]]
Để nó sẽ không bao giờ đạt đến else if[ txtVal.length > 11 ]
. Bạn cần thay đổi điều này:
else if[txtVal.indexOf["%"] != -1]
{
if[[txtVal.indexOf['%']] != [txtVal.length-1]]
{
alert[" % is only allowed at the end."];
return;
}
}
với điều này:
else if[txtVal.indexOf["%"] != -1 && txtVal.indexOf['%'] != [txtVal.length-1]]
{
alert[" % is only allowed at the end."];
return;
}
để nó không "nắm bắt" trường hợp trong đó txtVal.indexOf['%'] == [txtVal.length-1]
.
Đã trả lời ngày 11 tháng 1 năm 2012 lúc 1:05Jan 11, 2012 at 1:05
Ruakhruakhruakh
171K26 Huy hiệu vàng265 Huy hiệu bạc300 Huy hiệu Đồng26 gold badges265 silver badges300 bronze badges
0
Không có giới hạn về số lượng câu lệnh if
. Vấn đề là một trong những tuyên bố if
trước đó sẽ bắt gặp trường hợp bạn đang thử nghiệm.
Đi qua từng câu if
cho trường hợp thử nghiệm của bạn và xem liệu nó có bị bắt bởi một câu trước không.
Đã trả lời ngày 11 tháng 1 năm 2012 lúc 1:04Jan 11, 2012 at 1:04
Ben Sben sBen S
67.8K30 Huy hiệu vàng170 Huy hiệu bạc212 Huy hiệu đồng30 gold badges170 silver badges212 bronze badges
2
Điều này xảy ra bởi vì
else if[txtVal.indexOf["%"] != -1]
2 của bạn là đúng [vì vậy, thứ hai nếu từ trên cùng], nhưng điều kiện cho "nếu" bên trong nó không đúng [vì vậy nó không được "trả lại".Đã trả lời ngày 11 tháng 1 năm 2012 lúc 1:06Jan 11, 2012 at 1:06
Không có cách nào mà lần cuối cùng 'khác-if' bị tấn công: Nếu TextVal có '%' trong đó, nó sẽ chuyển sang cái thứ hai 'khác-if' và nếu nó không có '%' thì nó sẽ đi đến một trước cái cuối cùng. Vì vậy, cuối cùng nếu không bao giờ bị đánh.
Đã trả lời ngày 11 tháng 1 năm 2012 lúc 1:11Jan 11, 2012 at 1:11
AfshinafshinAfshin
1.20511 huy hiệu bạc29 Huy hiệu đồng11 silver badges29 bronze badges
Không có giới hạn nếu làm tổ. Có một rào cản hợp lý để được lồng vào nhau nếu các điều khoản khác. Nhìn vào sử dụng
switch[caseVariable]{
case 1: document.write["caseVariable = " + 1];
break;
case 35: document.write["caseVariable = " + 35];
break;
default: break;
}
Đã trả lời ngày 11 tháng 1 năm 2012 lúc 1:11Jan 11, 2012 at 1:11
AfshinafshinTravis J
1.20511 huy hiệu bạc29 Huy hiệu đồng40 gold badges203 silver badges270 bronze badges
1