我這個輸入2為什么也會出現他彈窗?
幫忙看看
<!DOCTYPE?HTML>
<html>
????<head>
????????<meta?http-equiv="Content-Type"?content="text/html;?charset=gb2312">
????????<title>無標題文檔</title>
????</head>
????
????<body>
????????<form>
??????????請選擇你愛好:<br>
??????????<input?type="checkbox"?name="hobby"?id="hobby1">??音樂
??????????<input?type="checkbox"?name="hobby"?id="hobby2">??登山
??????????<input?type="checkbox"?name="hobby"?id="hobby3">??游泳
??????????<input?type="checkbox"?name="hobby"?id="hobby4">??閱讀
??????????<input?type="checkbox"?name="hobby"?id="hobby5">??打球
??????????<input?type="checkbox"?name="hobby"?id="hobby6">??跑步?<br>
??????????<input?type="button"?value?=?"全選"?onclick?=?"checkall();">
??????????<input?type="button"?value?=?"全不選"?onclick?=?"clearall();">
??????????<p>請輸入您要選擇愛好的序號,序號為1-6:</p>
??????????<input?id="wb"?name="wb"?type="text"?>
??????????<input?name="ok"?type="button"?value="確定"?onclick?=?"checkone();">
????????</form>
????????<script?type="text/javascript">
????????function?checkall(){
????????????var?hobby?=?document.getElementsByTagName("input");
???????????for(var?i=0;i<hobby.length;i++){
???????????????hobby[i].checked=true;
???????????}
??????????//?任務1?
???????????
????????}
????????function?clearall(){
????????????var?hobby?=?document.getElementsByName("hobby");
???????????for(var?i=0;i<hobby.length;i++){
???????????????hobby[i].checked=false;
???????????}?
?????????//?任務2????
????????????
????????}
????????
????????function?checkone(){
????????????var?j=document.getElementById("wb").value;
????????????var?hobby?=?document.getElementsByName("hobby");
????????for(var?k=0;k<hobby.length;k++){
????????????if(k==j-1){
????????????????hobby[k].checked=true;
????????????}else{
????????????????alert("請輸入1-6的數");
????????????}
????????????break;
????????}
?????????//?任務3
????????
????????}
????????
????????</script>
????</body>
</html>
2016-04-05
問題出在最后一個函數checkone里的for循環中,
?if(k==j-1){
????????????????hobby[k].checked=true;
????????????}else{
????????????????alert("請輸入1-6的數");
????????????}
你可以想想當輸入j=5,循環開始時k=0這時if(k==j-1)中 0!=4執行else中的alert當然會彈出窗口啦,建議修改如下:
? ? ? ?function checkone(){
? ? ? ? var j=document.getElementById("wb").value;
? ? ? ? var hobby = document.getElementsByName("hobby");
? ? ? ? if(j<=hobby.length)
? ? ? ? {
? ? ? ? hobby[j-1].checked=true;
? ? ? ? }
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? alert("another number");
? ? ? ? }
? ? ? ? }