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