我试图点击链接将其添加到选中,检查项目是否在菜单之前不在列表中但似乎循环部分有一些问题。
JavaScript代码
<a href="#" class="link">Bread</a>
<a href="#" class="link">Suger</a>
<a href="#" class="link">Tea</a>
<select id="list">
</select>
HTML代码
blat.exe - -f anyAddress@mail.com -to recipient@mail.com -s Subject -body "type you body here" ^ -server hp2-server.abcd.abcdef:25
pause
答案 0 :(得分:1)
有许多方法可以使用jQuery方法来简化它。
一个例子:
$('.link').click(function(event) {
var item = $(this).text();
if(!$('#list option[value=' + item +']').length){
$('#list').append('<option value="' + item +'">' + item + '</option>');
}
});
而不是使用for
循环可以使用each()
轻松迭代元素集合,这会暴露索引和元素
答案 1 :(得分:0)
你在做什么:
for (var i = 0; i < $('#list').length; i++) {
你应该这样做:
for (var i = 0; i < $('#list option').length; i++) {
答案 2 :(得分:0)
if ($('#list').options[i].text == item)
是不是缺少一些括号?
if ($('#list').options[i].text() == item)
答案 3 :(得分:0)
问题在于:
$('#list').options[i].text == item
这不是从option
元素中获取select
元素的方法。
试试这个:
$('#list').find('options:nth(' + i + ')')).text() == item
答案 4 :(得分:0)
使用以下代码。这是jsfiddle的目的。
$(document).ready(function() {
$('.link').click(function(event) {
var this_item_was_not_in_list = true;
var clickedItemName =$(this).text();
var listLength = $('#list option').length;
for (i=0; i<listLength ; i++)
{
if ($('#list option')[i].value == clickedItemName)
{
this_item_was_not_in_list = false;
break;
}
}
if (this_item_was_not_in_list)
{
$('#list').append('<option>' + clickedItemName + '</option>');
}
});
});
&#13;
<html>
<a href="#" class="link">Bread</a>
<a href="#" class="link">Sugar</a>
<a href="#" class="link">Tea</a>
<select id="list"></select>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</html>
&#13;