Javascript 使用jQuery将选项添加到select会弄乱文本索引

Javascript 使用jQuery将选项添加到select会弄乱文本索引,javascript,html,jquery,dom,Javascript,Html,Jquery,Dom,我正在为用户制作一个屏幕来验证文档,使用某些对象和本地存储来保存用户所做的操作,以防他意外关闭浏览器或这些行中的其他内容。由于文档属于不同类别,我不会一次显示所有文档,而是清空选择选项并以友好方式添加它们。当用户返回到另一个过滤器时,我检查本地存储并标记用户已经验证的选项。例如:选项文本必须显示“Document 1--Verified--”,而不是显示“Document 1” 然而,我发现添加选项会使文本索引混乱。它将它们正确地显示在浏览器中,但在尝试访问它们时,我发现所有文本都添加到元素0,

我正在为用户制作一个屏幕来验证文档,使用某些对象和本地存储来保存用户所做的操作,以防他意外关闭浏览器或这些行中的其他内容。由于文档属于不同类别,我不会一次显示所有文档,而是清空选择选项并以友好方式添加它们。当用户返回到另一个过滤器时,我检查本地存储并标记用户已经验证的选项。例如:选项文本必须显示“Document 1--Verified--”,而不是显示“Document 1”

然而,我发现添加选项会使文本索引混乱。它将它们正确地显示在浏览器中,但在尝试访问它们时,我发现所有文本都添加到元素0,而不是添加到元素1,2。。。等等因此,我很难在标记处添加“-Verified--”,我需要添加一些东西来区分这些行,然后拆分它们并添加“-Verified--”

下面是一个简单的示例代码来说明这个问题。我写这篇文章是为了说明这个问题

<select id="Documents">
<option val="-1">--Select a document--</option>
</select>
<br/>
<button id="button">Click to add an option</button>
当对.eq(0).text()的调用完成时,警报显示“-Select a documentNew option added”。同时,eq(i).text()将返回“”,对.eq(i).val()的调用将返回未定义。我做错什么了吗

如果要检查此项,请修改代码:

谢谢您的时间。

这里使用的
eq()
是错误的,基本上您是在尝试使用索引
i
选择id
Documents
的元素,但是您想要的是
选择#Documents
的子元素(
选项
),对吗

因此,我相信您希望使用:
$(“#文档”).children().eq(i).text()

请参阅下面的代码片段

var i=0;
$(“#按钮”)。在(“单击”,添加选项);
函数addOption(){
var text=“新增期权”+i;
$(“#文档”)。追加(新选项(文本,i));
++一,;
console.log($(“#Documents”).children().eq(i).text());
}

--选择一个文档--


单击添加选项
wow dude,你说得对。想想我花了几个小时在这上面。。。我检查了jQuery文档,它说.eq()将匹配集减少到指定的索引。我可以问一下为什么使用.eq(0)显示所有的文本吗?我认为它必须返回一个未定义的,因为select标记没有文本属性实际上,它有一个
文本
,因为,文档说:“获取匹配元素集中每个元素的组合文本内容,包括它们的子元素”,所以,
文档
的子元素中有文本
var i = 0;

$("#button").on("click", addOption);

function addOption() {
var text="New option added";
$("#Documents").append(new Option(text, i));
++i;
alert($("#Documents").eq(0).text());
alert($("#Documents").eq(i).text());
}