Javascript IE8奇怪行为动态下拉列表

Javascript IE8奇怪行为动态下拉列表,javascript,jquery,html,drop-down-menu,internet-explorer-8,Javascript,Jquery,Html,Drop Down Menu,Internet Explorer 8,谢谢你检查这个。我在特定页面的javascript中输入一个值(即“51”)后,就会填充这个动态ddl。因此,不同的页面会根据数字值生成不同的列表。除了IE 8(韵+1)外,一切都很顺利。当我在IE8中打开时,我只得到一个下拉项,上面写着“首先选择一个程序” 我做了一些研究,注意到这里有一篇文章在谈论。empty在IE8中不可靠,但我不使用它。这是我的工作代码: 本地代码: <script type="text/javascript" language="javascript"> &

谢谢你检查这个。我在特定页面的javascript中输入一个值(即“51”)后,就会填充这个动态ddl。因此,不同的页面会根据数字值生成不同的列表。除了IE 8(韵+1)外,一切都很顺利。当我在IE8中打开时,我只得到一个下拉项,上面写着“首先选择一个程序”

我做了一些研究,注意到这里有一篇文章在谈论。empty在IE8中不可靠,但我不使用它。这是我的工作代码:

本地代码:

<script type="text/javascript" language="javascript">
<!--
   $(document).ready(function () {
       $('#ballform_program').val(51);
       loadCampuses();
   });
//-->
    </script>

引用的DDL功能:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

<!-- Populate Campus DDL -->
<script type="text/javascript" language="javascript">
<!--
    $(document).ready(function () {
        if (firstField("#ballform_campuslocation", "#ballform_program") == "#ballform_campuslocation") {
            loadCampuses(); 
            $('#ballform_campuslocation').change(loadPrograms);
        } else if (firstField("#ballform_campuslocation", "#ballform_program") == "#ballform_program") {
            loadPrograms();
            $('#ballform_program').change(loadCampuses);
        }

        $('#ballform_searchterm').val(getSearch());
        $('#ballform_url').val(location.href);
        $('#ballform_referrer').val(document.referrer);
        $('#ballform_useragent').val(navigator.userAgent);

        $.getJSON("http://jsonip.appspot.com?callback=?",
            function(data) {
                $('#ballform_ipaddress').val(data.ip);
        });
    });

    function loadCampuses() {
        var host = location.host;
        var data;

        if (firstField("#ballform_campuslocation", "#ballform_program") == "#ballform_campuslocation") {
            data = liveballScriptlet(6, "json", "url=" + host + "&program=0");
            clearProgram();
        } else {
            var programID = $('#ballform_program').val();
            data = liveballScriptlet(6, "json", "url=" + host + "&program=" + programID);
        }

        var options = "<option value=''>Choose...</option>";
        var optGroup = "";
        var jsonString = $.parseJSON(data);

        $.each(jsonString, function () {
            var value = this['ID'];
            var text = this['Name'];
            var school = this['School'];

            if (optGroup != school) {
                if (optGroup != "") {
                    options += "</optgroup>";
                }
                optGroup = school;
                options += "<optgroup label='" + optGroup + "'>";
            }
            options += "<option value='" + value + "'>" + text + "</option>";
        });
        $('#ballform_campuslocation').html(options);
    }

    function clearCampus() {
        if ($('#ballform_campuslocation').length > 0) {
            $('#ballform_campuslocation')
                .find('option')
                .remove()
                .end()
                .append('<option value="">Choose a Program First</option>');

            $('#ballform_campuslocation')
                .find('optgroup')
                .remove()
                .end();
        }
    }

    function loadPrograms() {
        var host = location.host;
        var data;

        if (firstField("#ballform_campuslocation", "#ballform_program") == "#ballform_program") {
            data = liveballScriptlet(7, "json", "url=" + host + "&campus=0");
            clearCampus();
        } else {
            var campusID = $('#ballform_campuslocation').val();
            data = liveballScriptlet(7, "json", "url=" + host + "&campus=" + campusID);
        }

        var options = "<option value=''>Choose...</option>";
        var optGroup = "";
        var jsonString = $.parseJSON(data);

        $.each(jsonString, function () {
            var value = this['ID'];
            var text = this['Name'];
            var degree = this['Degree'];

            if (optGroup != degree) {
                if (optGroup != "") {
                    options += "</optgroup>";
                }
                optGroup = degree;
                options += "<optgroup label='" + optGroup + "'>";
            }
            options += "<option value='" + value + "'>" + text + "</option>";
        });
        $('#ballform_program').html(options);
    }

    function clearProgram() {
        if ($('#ballform_program').length > 0) {
            $('#ballform_program')
                .find('option')
                .remove()
                .end()
                .append('<option value="">Choose a Campus First</option>');

            $('#ballform_program')
                .find('optgroup')
                .remove()
                .end();
        }
    }

    function getSearch() {
        var work = "", output = "";
        var start = 0, length = 0;

        work = document.referrer;
        start = work.indexOf("q=") + 2;

        work = work.substring(start);
        length = work.indexOf("&");

        if (length == -1) {
            output = work;
        } else {
            output = work.substring(0, length);
        }

        return output;
    }

    function firstField(object1, object2) {
        var o1Exists, o1, o1Pos;
        var o2Exists, o2, o2Pos;
        var value = ""; 

        //check for existence
        o1Exists = ($(object1).length);
        o2Exists = ($(object2).length);

        if (!o1Exists && !o2Exists) {
            value = "";
        } else if (o1Exists && !o2Exists) {
            value = object1;
        } else if (!o1Exists && o2Exists) {
            value = object2;
        } else {
            try {
                o1 = $(object1);
                o2 = $(object2);

                o1Pos = o1.position();
                o2Pos = o2.position();

                if (o1Pos.top < o2Pos.top) {
                    value = object1;
                } else {
                    value = object2;
                }
            } catch (err) {
                value = object1;
                alert(err);
            }
        }

        return value;
    }

//-->
</script>


有没有人在这里有一个修复的可能性,不涉及重写整个“工作”脚本?非常感谢你

@epascarello在评论中指出,我可以尝试交换:

$('#ballform_campuslocation').html(options); 
与:


而且,在这个场景中,它成功了!再次感谢。

控制台中有错误吗?您是否设置了调试语句以查看代码是否被命中?切换
$('#ballform_campuslocation').html(选项)
$('#ballform_campuslocation')。附加(选项)改变?嘿,伙计。对不起,我没有看到这个回复。谢谢.append确实起到了作用。。该列表现在正在填充。我马上给xbrowser发短信。谢谢列表现在正在拉所有选项,而不仅仅是校园选项。。。它调用校园和程序..结果是.append的交换在这种情况下起作用,因为他们只需要一个列表来填充。非常感谢你!
$('#ballform_campuslocation').append(options);