1

次の 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コードがすべきことですが、私が間違っていることを理解できないようです。(まあ、私はそれを正しくやっているといいのですが)

誰かが私が間違っていることを知っていますか?

(この段階では jQuery を使用するつもりはありません)

4

2 に答える 2

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/

于 2012-06-18T08:27:59.453 に答える
1

options抽出した select 要素のプロパティを使用する必要があります。

例:

<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>
于 2012-06-18T08:25:19.203 に答える