2012-06-18 39 views
1

我有以下的JavaScript:的Javascript寻找失踪选择值

var next_user = "1"; 

    i=0; 
    for (i=0;i<=10;i++) 
    { 
     var el = document.getElementById("user_list"); 
     var val = el[i].value; 

     if (val <= next_user) 
     { 
      next_user = i; 
     } 

     if (val >= next_user) 
     { 
      next_user = i; 
     } 


      alert(next_user); 
    } 

,我已经按照屏幕上选择框:

<select id="user_list" onclick="load_user(this)" name="user_list" size="21" style="width:200px;"> 
<option value="1">Bob</option> 
<option value="2">john</option> 
<option value="3">Frank</option> 
<option value="5">tom</option> 
</select> 

我似乎无法得到它的工作我的方式想要它。

选择框在列表中可以有10个用户,并且每个(选项)值都是唯一的(1-10)。

正如你可以在我的选择框中看到的我缺少值4.从上面的我的Javascript代码是为了通过选择框,并找到缺少的第一个值。 (在我上面的例子中,它应该回复4,因为这是缺少),但如果鲍勃丢失,那么它应该回应1回应。

那么这就是我的JavaScript代码应该做的,但我不能弄清楚我做错了什么。 (以及我希望我做的是正确的)

有人知道我在做什么错吗?

(我不是plaining使用任何的jQuery在这个阶段)

+0

您选择'select'元素,而不是'option'元素。 。 – Esailija

+0

也许通过这个测试:'if(i + 1!= val)'?顺便说一句,如果你需要10次迭代,你必须在循环中写入<10 **或**'i = 1'。看这个链接:http://jsfiddle.net/Eu2a2/ – Mageek

回答

1

你应该用你提取的选择元素的options财产。

例子:

<script> 
var userList = document.getElementById("user_list"); 
for (var i=0;i<userList.options.length; i++) { 
    if (userList.options[i].value != (i+1)) { 
     alert((i+1)+" is missing"); 
     break; 
    } 
} 
</script> 
1

您可以使用下面的代码,以提醒缺少选项

var next_user = 1; 
var el = document.getElementById("user_list"); 
for (i = 0; i < 10; i++) { 
    var val = parseInt(el[i].value); 

    if (val > next_user) { 
     alert(next_user); 
     break; 
    } else { 

     next_user++; 
    } 

}​ 

演示:http://jsfiddle.net/joycse06/75kM7/