我的页面上有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中工作,我有点忽略了语法错误的可能性。
答案 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);
希望这有帮助。
此致