jQuery,填充DropDown列表

时间:2014-11-20 16:07:19

标签: javascript jquery html drop-down-menu asp-classic

我的页面上有2个下拉列表,在循环中动态创建(1到2),更改事件为1(onChange= fillDropDown(this, <%=i%>);),我正在尝试填充第二个下拉列表。代码如下:

function fillDropDown(control, id) {
    var ddllist = $("#dropDownList"+ id); // Debug : OK 
    var url = "GetData.asp?param=" + $(control).val(); // Debug : OK
    $.getJSON(url, function (data){
        $.each(data, function(){
            // database call is successful, I had alert here to display the data rows.
            ddllist .append($("<option />").val(this.ID).text(this.Name));
        });
    });
}

我以前使用纯JS使用document.getElementById("dropDownList" + id)获取元素,然后在for循环中创建一个新元素(option),使用数据分配其innerHTML和value属性,最后附加此元素下拉列表ddlInstType.appendChild(element)的元素。这工作正常,但只在IE中。由于某些原因,此解决方案在Firefox&amp;铬。我也尝试在页面底部移动脚本,但仍然没有。

此问题可能在此之前已多次讨论过,我确实在寻找可能的答案,但无法解决我的问题。我不确定我做错了什么。

提前感谢您,如果您需要更多信息,我会立即提供。

PS:没有错误抛出,它根本不做任何事情。我的第二次下拉仍然是空的。

编辑2:

由于原始代码是由其他人编写的,因此第二个下拉列表缺少ID属性,仅分配了name属性。添加了与名称相同的ID属性,现在效果很好。 由于一些奇怪的原因,document.getElementById()在IE中工作,即使你不是ID。但是在Chrome&amp; Firefox浏览器。因为它在IE中工作,我有点忽略了语法错误的可能性。

1 个答案:

答案 0 :(得分:1)

如果没有看到所有代码,就很难模拟出问题。我的一个应用程序中有类似的功能。

    //Extract from ajax function
    $.each(data.d, function (index, element) 
       {
        users += "<option data-u-i='" + element.uid + "'>" + element.firstName + " " +     
                  element.lastName + "</option>";
       });

然后我将users变量传递到下拉列表中:

$('.dropdown').html(users);

希望这有帮助。

此致