1

我有一个基于 php 生成的选择选项值的 JavaScript 函数的 Internet Explorer 问题。我搜索了一下,我认为问题与那些相似

在IE中设置选择框的innerHtml

Internet Explorer 未在链选择上显示 <option> 值

我根据这些解决方案尝试了不同的方法,但没有成功。我的应用程序是这样工作的:

  • 我的 HTML 文件中有一个嵌套选择:

    <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());
        });         
    });

所以我有两个选择。当第一个选择(国家)完成后,我使用 PHP 连接到数据库并生成第二个选择(项目)。这工作正常,但另一个 JavaScript 函数(“zoomToProject()”)使用生成的值

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

不工作!该应用程序在 Firefox、Chrome 和 IE 9 中运行良好,但 IE 8 失败,因为该函数没有获得所需的参数“值”。

有没有人对此有建议或想法?

干杯,D. Stroeer

好的,感谢您的快速回复!我正在使用 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 函数,但是将 ajax 与 json 一起使用是我的动态,如下所示:

索引.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 回答