0

選択オプションを動的に入力するためのコードがいくつかあります。これをローカルのプレーンテキストファイルで使用すると機能します。ただし、これは私の wordpress ベースのサイトでは機能しません。コードは次のとおりです。

<div class="postcell">
  <select onchange="populate1(this)" id="toplevel">
    <option>SEÇİNİZ</option>
    <option value="Keçiören">Keçiören</option>
  </select>
</div>
<div class="postcell">
  <select  id="selectlevel2"></select>
</div>
<script type="text/javascript">
  function populate1(selectp)
  {
    selectc=document.getElementById('selectlevel2');
    if(!selectc){return;}   

    var content=new Array();
    content['Keçiören']=['BLABLA', 'araba'];
    selectc.options.length=0;
    cur=content[selectp.options[selectp.selectedIndex].value];
    if(!cur){return;}

    selectc.options.length=cur.length;
    for(var i=0;i<cur.length;i++)
    {
      selectc.options[i].text=cur[i];
      selectc.options[i].value=cur[i];
    }

    alert(selectc.options[0].text);
    alert(selectc.options[1].text);
  }

</script>

コードが少し乱雑であることは承知しています。でも動的に作成されるので、どうしようもありませんでした。最後の 4 ~ 5 行 ( alert のあるもの) の部分は、関数を実行しているかどうかを制御するためのものです。そして、どうやら、私は機能を実行しています。アラートがポップアップし、予想されるコンテンツも表示されます。また、 for ループが正常に機能することも証明しています。

また、firebug で js エラーがないことを確認して検証しました。

これが機能しない場合は、他の多くのコードを変更する必要があります。どんな助けにも感謝します。ありがとうございました。

- - - 編集 - - -

私はちょうど気づいた、私は問題を説明しなかった-.-. 問題は、これらの制御されたアラート ボックスで正しいコンテンツを取得できることです。しかし、2 番目の選択ボックスの内容は期待どおりに変更されません。私がやろうとしていたのは、最初の選択ボックスで選択された内容に基づいて、2 番目の選択ボックスのオプションを変更することです。最初の ID は「toplevel」、2 番目の ID は「selectlevel2」です。

私も追加したい:

テンプレートは、select タグの下に次の行を自動的に追加します。

<div id="selectlevel2_chzn" class="chzn-container chzn-container-single chzn-container-single-nosearch" style="width: 220px;" title="">
<a class="chzn-single" tabindex="-1" href="javascript:void(0)">
<span>Seçiniz</span>
<div>

したがって、新しい要素を動的に追加しても、それらの「Seçiniz」はオーバーライドされます。(これは、PHPコードで最初のデフォルト要素として決定しました。これは、「選択してください」を意味します。) それらのセリフが何であれ、それは「Chosen」と呼ばれるものについてだと思います。すべての選択タグの下にそのような div タグを自動的に追加するにはどうすればよいですか?

4

2 に答える 2

0

問題を解決しました。selectタグのcssファイル名「chosen」を宣言したようです。公立図書館だと思います。どういうわけか、私はまだどのように理解することができません.それはすべての選択要素の後にそれらの div タグを追加します. 変。テンプレートフォルダーからライブラリを削除しました:D.これにより、標準要素を使用できるようになり、コードが機能しました。

編集:さらなる調査により、chooseという名前の選択ボックスプラグインがあることがわかりました。

于 2013-08-17T10:50:04.653 に答える
0

SelectElement.options は読み取り専用変数です。( mdn )。あなたがやろうとしていることはうまくいきません。次のコードのようなものを使用する必要があります。

  function populate1(selectp)
  {
    var selectc=document.getElementById('selectlevel2');
    if(!selectc){return;}   

    var content=new Array();
    content['Keçiören']=['BLABLA', 'araba'];
    selectc.options.length=0;
    cur=content[selectp.options[selectp.selectedIndex].value];
    if(!cur){return;}

    //Clear all options
    selectc.innerHTML = "";

    selectc.options.length=cur.length;
    for(var i=0;i<cur.length;i++)
    {
      var tag = document.createElement('option');
      tag.innerText=cur[i];
      tag.value=cur[i];
      console.log( tag );
      selectc.appendChild( tag );
    }
  }

最初の行では、以前にグローバルスコープでリークしたため、これは「var」を使用しています。ループでは、document.createElement( mdn ) とElement.appendChild( mdn ) を使用するようになりました。

フィドル: http://jsfiddle.net/WYBX9/

于 2013-08-17T10:37:34.730 に答える