1

PHP で生成された選択オプションの値に基づく JavaScript 関数で、Internet Explorer の問題が発生しました。少し検索しましたが、問題はそれらと似ていると思います

IEでセレクションボックスのinnerHtmlを設定する

Internet Explorer が chain select の <option> 値を表示しない

これらのソリューションに基づいて別のことを試しましたが、成功しませんでした。私のアプリケーションは次のように動作します:

  • HTML ファイルにネストされた select があります。

    <div id="selectCountry" class="infobox_map">
        <p align="center"><b>Selection relating to Country:</b></p>
        <div id="country-navigation">
            <select id="first-choice" size="1" style="width: 234px" onclick="zoomToCountry(value); fillCountryInfo(value)"> 
                <option selected value="base">Choose a Country</option>
                <option value="Bolivia">Bolivia</option>
                <option value="India">India</option>
                <option value="Switzerland">Switzerland</option>            
                <option value="Tanzania">United Republic of Tanzania</option>
            </select>   
        </div>
        <div id="project_navigation">                 
            <select id="second-choice" size="1" style="width: 234px" onclick="zoomToProject(value)">
                <option selected value="base">Select a project</option>
                <option>Projects</option>
            </select>                   
        </div>  
    </div>
    

関連する JavaScript 関数は次のようになります。

        $(function() {

        $("#first-choice").change(function() {
            $("#factbook").load("factbook.php?choice=" + $("#first-choice").val());
            $("#second-choice").load("select_country.php?choice=" + $("#first-choice").val());
        });

        $("#first-choice-proj").change(function() {
            $("#second-choice-proj").load("select_project.php?choice_proj=" + $("#first-choice-proj").val());
        });         
    });

だから私は2つの選択を持っています。最初の選択 (国) が完了したら、Php を使用してデータベースに接続し、2 番目の選択 (プロジェクト) を生成します。これは問題なく動作しますが、生成された値を使用する別の JavaScript 関数 (「zoomToProject()」)

<select id="second-choice" size="1" style="width: 234px" onclick="zoomToProject(value)">

うまくいきません!アプリケーションは Firefox、Chrome、および IE 9 では正常に動作しますが、関数が必要なパラメーター「値」を取得しないため、IE 8 では失敗します。

これについてアドバイスやアイデアを持っている人はいますか?

乾杯、D.ストロイヤー

わかりました、迅速な対応ありがとうございます! jquery-1.3.2 を使用しています。そして、これは「zoomToProject()」関数のコードです:

function zoomToProject(value) {
xval = wfs_climate.getFeaturesByAttribute('name', value);
yval = wfs_climate.getFeaturesByAttribute('name', value);   
xcoord = xval[0].geometry.x;
ycoord = yval[0].geometry.y;        
map.setCenter(new OpenLayers.LonLat(xcoord,ycoord), 10);

}

4

1 に答える 1

0

load 関数を使用したいことは理解していますが、次のように json と一緒に ajax を使用するのは非常にダイナミックです。

index.html:

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Populating select box with ajax data</title>
    <script
      src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js">
    </script>
    <script>
      $(function()
      {
        $.get('get_country_codes.php', function(codes)
        {
          var select = $('#country_codes');

          for (var i = 0; i < codes.length; i++)
          {
            var code = codes[i];
            var option = $('<option/>');

            option.val(code.id);
            option.text(code.text);

            select.append(option);
          }
        }, 'json');
      });
    </script>
  </head>
  <body>
    <select id="country_codes"></select>  
  </body>
</html>

get_country_codes.php:

<?
    $arr = array();

    $obj = new StdClass();
    $obj->id = 213;
    $obj->text = "Algeria";
    $arr[] = $obj;

    $obj = new StdClass();
    $obj->id = 46;
    $obj->text = "Sweden";
    $arr[] = $obj;

    echo json_encode($arr);
?>

そして多分あなたの問題はそのような解決策で解決するでしょう.

于 2012-07-03T20:01:48.787 に答える