Javascript 代码显示选择值

Javascript code display select values

本文关键字:选择 显示 代码 Javascript      更新时间:2023-09-26

我在确定值是否丢失时遇到了一些问题。

我的屏幕上有以下选择框:

<select id="user_list" onclick="load_user(this)" name="user_list" size="21" style="width:200px;">   
<option value="1">Item1</option>
<option value="2">Item2</option>
<option value="4">Item4</option>
</select>

我正在使用以下JavaScript:

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; 
        } 
        else
        {
        alert((userList.options.length+1)+" is missing"); 
        break;
        }
} 

面临的问题是,如果选项值 1,2,3,4 有回复 5(因为这是下一个数字),这很好,因为这就是我想要的。

如果我删除选项 3(如上面的选择框),它一直回复 4 丢失,而它应该说缺少 3。

如果我删除以下代码:

else
{
alert((userList.options.length+1)+" is missing"); 
break;
}

执行我希望它执行的操作,但在检查所有值后它没有获得下一个值编号(因此它在读取列表中的最后一个选项后停止)。

它应该

做的是浏览选择框中的所有选项,如果缺少其中一个值,它应该删除缺少的值。如果所有值数字都在那里,那么它应该缺少下一个可用选项。

谁能看出我做错了什么?

它一直告诉你4丢失了,因为你在循环的每次迭代中都运行else代码(直到它找到一个缺失的代码)。else中的代码只应运行一次。您可以使用标志变量来设置是否缺少一个并在循环后进行检查。尝试将 js 代码更改为

var allFound = true;
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");
            allFound = false;
            break;
        }
    }
if(allFound)
    alert((userList.options.length+1)+" is missing");

适用于Jfiddle http://jsfiddle.net/Vt2DJ/

var userList = document.getElementById("user_list"); 
var whileindex  = 0; //keeps track of the number of options checked
var i = 0; //values that should be available for the options
while ( whileindex <  userList.options.length )
{
  if (userList.options[i].value != (i+1)) { 
      alert((i+1)+" is missing"); 
      i++; //this because otherwise we have a wrong offset for the check
  } 
  else
  {
      whileindex++; //option exists
  }
   i++; //go on to the next value
}