循环设置下拉值-jquery对象引用错误

循环设置下拉值-jquery对象引用错误,jquery,Jquery,我并没有真正使用jQuery方法来设置这个下拉列表的值和文本。我不太确定jQuery的设置方式,但是下拉列表的ref肯定是代表下拉列表的jQuery对象 因此,保存引用(代表)下拉列表的jQuery对象的变量定义如下: ddlCar=$('#')//是这是引用ASP.NET控件id ddlCar在引用下拉列表方面运行良好…这不是问题所在 下面是引发错误的代码和我最初的问题: for (key in carList) { ddlCar[0].options[i].text = carLi

我并没有真正使用jQuery方法来设置这个下拉列表的值和文本。我不太确定jQuery的设置方式,但是下拉列表的ref肯定是代表下拉列表的jQuery对象

因此,保存引用(代表)下拉列表的jQuery对象的变量定义如下:

ddlCar=$('#')//是这是引用ASP.NET控件id

ddlCar在引用下拉列表方面运行良好…这不是问题所在

下面是引发错误的代码和我最初的问题:

for (key in carList) 
{
    ddlCar[0].options[i].text = carList[key].Name;
    ddlCar[0].options[i].value = carList[key].CarId;
    i++;
}
错误为:
ddlCar[0]。选项[i]未定义

请记住,当我使用带有getElementByID的标准JS代码引用下拉列表时,这个循环是有效的,但现在我通过jQuery对象ddlCar引用下拉列表,所以现在在将我的ddlCar更改为通过jQuery对象引用下拉列表(使用$(“#”)后,循环中断了

所以现在,我试着把它破解出来。我知道现在添加[0]将允许我引用dropdown ref,这是一个jquery对象,就像它是一个原始DOM元素一样,这样我就可以像使用普通的JS语法一样使用它。但由于某些原因,我仍然没有为ddlModel[0]定义选项[I]。我知道ddlModel[0]是一个有效的对象,因为我在页面上代码的其他部分中使用过它:

ddlCar[0].options.length = ObjectCount(carList);
所以我很好奇为什么这个循环首先不起作用。我甚至试过:

for (key in carList) 
{
    ddlCar[0].options[0][i].text = carList[key].Name;
    ddlCar[0].options[0][i].value = carList[key].CarId;
    i++;
}
我猜这是一个由两部分组成的问题

jQuery如何设置我的下拉列表的文本和值?我已经有了dropodown的jQuery对象引用,所以我稍后自然会对其进行重构,以避免在剩下的语法中使用JS来设置值。

for(输入carList)
for (key in carList) 
{
    $("<option/>",{text:carList[key].Name,value:carList[key].CarId}).appendTo(ddlCar[0])    
    i++;
}
{ $(“”,{text:carList[key].Name,value:carList[key].CarId}.appendTo(ddlCar[0]) i++; }
非常感谢。有趣的是,我还注意到我一直在使用的同一个循环..如果我使用jQuery对象引用下拉列表,然后执行ddlCar[0],就好像我的下拉选项数组在总计数中丢失了一个,因此我通过尝试使用未定义的选项[I_last]设置选项数组,以结束最后一个循环我不知道这是为什么,所以我认为你的例子是在使用ddlCar,就像我用getElementById引用它一样,对吗?因为它是通过jQuery引用的,所以我不需要在ddlCar之后使用[0],对吗?嗯,我尝试了上面的方法,但它做了一些奇怪的事情…在列表条目之后,下拉列表中有一大堆空白条目…参考您的第二条评论M是的,您在放置
[0]
时也不需要
[0]
在jquery对象之后,它返回一个DOM元素
ddlCar
是jquery对象,
ddlCar[0]
是有意义的DOM元素库。问题是您的代码,在开始获取select中的实际17个条目之前,我得到了一堆空白列表条目(与列表长度相同的数字)。所以当我出于某种原因点击下拉菜单时,我得到了17个空格和17个实值。我不知道添加这样的空白条目会是什么样子。奇怪…:)