0

重複の可能性:
Javascriptを使用してオプションの値によって選択ボックスでオプションを選択する方法は?

ajax呼び出しで選択したいドロップダウンメニューがあります。これは私が現在使用しているものです:

var selector = document.getElementById("action_person").firstChild;

var n = 0;
while(selector.options[n] != null)
{
   if(selector.options[n].value == "person")
   {
      selector.options.selectedIndex = n;
   }                    
   n++;
}

に置き換えselector.options.selectedIndex = nてみましたselector.options[n].selected = true。しかし、それは私のために決して選択しません。ドロップダウンの一番上に常に項目が表示されます。

値「person」がドロップダウンに存在し、変数「selector」が有効なドロップダウンを指していることを確認しました。ここで何が間違っていますか?

編集: 明白な質問に襲われた後、これが ajax 呼び出しの後に起動されているかどうかが不明確であることに気付きました。

4

4 に答える 4

0

オプションをループしてから、適切なオプションに selected = "selected" を含めるように DOM を変更しました。与えられた解決策がどれも機能しなかった理由はわかりませんが、現在は機能しています。

于 2012-09-03T05:04:54.937 に答える
0

これはどのように作動しますか?または、テスト用の Web ブラウザをお知らせください。

<select name="selector">
<option>Foo</option>
<option>Bar</option>
<option>Baz</option>

<script type="text/javascript">
    var selector = document.all('selector');
    var setSelectedItem = function(content){
        for(var i=0;i<selector.children.length;i++){
            if(selector.children[i].value == content){
                selector.selectedIndex = i;
            }
        }
    }
    setSelectedItem("Baz")
</script>
于 2012-09-03T04:18:52.837 に答える
0

これだけ書いて

document.getElementById("action_person").firstChild.value="person";
于 2012-09-03T03:33:57.130 に答える
0

あなたのコードで:

> while(selector.options[n] != null)

options[n]が存在しない場合、式は null ではなく「未定義」を返します。次のように書くこともできます。

 while (selector.options[n])

それから:

> {
>   if(selector.options[n].value == "person")
>   {
>      selector.options.selectedIndex = n;

options コレクションにはプロパティがありませんがselectedIndex、select 要素にはあります。そう:

       selector.selectedIndex = n;

または、特定のオプションの selected プロパティを true に設定できます。

       selector.options[n].selected = true;

複数選択を繰り返す場合を除き、次の行は return ステートメントになる可能性があります。

       return;

オプションのdefaultSelectedプロパティを に設定することもできることに注意してくださいtrue。フォームがリセットされると (たとえば、リセット ボタンをクリックして)、そのオプションが選択済みとして設定されます。

于 2012-09-03T04:27:21.103 に答える