2014-08-28 99 views
0
$('a#noday').click(function() 
{ for(g=1;g<=10;g++) 
var ddl = document.getElementById('daySelect_'+g); 
var opts = ddl.options.length; 
for (var i=0; i<opts; i++){ 
    if (ddl.options[i].value == ""){ 
     ddl.options[i].selected = true; 
     break; 
    } 
}) 

$('a#wed').click(function() 
{ for(g=1;g<=10;g++) 
var ddl = document.getElementById('daySelect_'+g); 
var opts = ddl.options.length; 
for (var i=0; i<opts; i++){ 
    if (ddl.options[i].value == "wed"){ 
     ddl.options[i].selected = true; 
     break; 
    } 
}) 

下面是我選擇的HTML代碼的Javascript改變下拉列表值

<select class="form-control daySelect" id="daySelect_1" name="daySelect_1"> 
<option value="">Select</option> 
<option value="wed">Wed</option> 
<option value="sat">Sat</option> 
<option value="sun">Sun</option> 
<option value="satsun">Sat/Sun</option> 
<option value="wedsatsun">WedSatSun</option> 
</select> 

下面是我的超級鏈接HTML

Set all to: 
<a id="noday" href="#"><span class="label label-info">No Day</span></a>&nbsp; 
<a id="wed" href="#"><span class="label label-info">Wednesday</span></a>&nbsp; 

我試圖單擊超鏈接,但我的選擇下拉列表不改變。我確實嘗試了警報,以確保我的鏈接正常工作,並設法執行警報。

JsFiddle

+0

你包裹在裏面的document.ready你的代碼..可以實現??? – 2014-08-28 08:53:19

+0

你試過'$('#wed')'而不是'$('a#wed')'嗎?因爲該ID在頁面上必須始終唯一。 – reporter 2014-08-28 08:58:11

+0

@Exception,對不起,我沒有包裝在document.ready中,只是不要粘貼在這裏 – user3412075 2014-08-28 08:59:21

回答

2

有幾件事情。你錯過了很多大括號,你會發現你的控制檯有錯誤。你還認爲daySelect_ 1到10存在,根據你的小提琴他們可能不會。

$('a#noday').click(function() { 
    for (g = 1; g <= 10; g++) { // This was missing 
     var ddl = document.getElementById('daySelect_' + g); 
     if (!ddl) continue; // What if there is no daySelect_10? 
     var opts = ddl.options.length; 
     for (var i = 0; i < opts; i++) { 
      if (ddl.options[i].value == "") { 
       ddl.options[i].selected = true; 
       break; 
      } 
     } // Missing this brace too 
    } 
}); 

$('a#wed').click(function() { 
    for (g = 1; g <= 10; g++) { 
     var ddl = document.getElementById('daySelect_' + g); 
     if (!ddl) continue; 
     var opts = ddl.options.length; 
     for (var i = 0; i < opts; i++) { 
      if (ddl.options[i].value == "wed") { 
       ddl.options[i].selected = true; 
       break; 
      } 
     } 
    } 
}); 

Updated jsFiddle

最後,你可能要考慮使用jQuery的這一切,而不僅僅是DOM事件。這將節省您不得不這樣做許多嵌套for循環,例如:

$('a#noday').click(function() { 
    $("[id^=daySelect_").val(""); 
}); 

$('a#wed').click(function() { 
    $("[id^=daySelect_").val("wed"); 
}); 

很整潔! jsFiddle

+0

我試過你的jsfiddle,但它似乎不工作,當我點擊超鏈接時,選擇的下拉列表不變, – user3412075 2014-08-28 09:08:58

+0

@ user3412075不知道該說些什麼 - 絕對適合我!怎麼樣的jQuery小提琴? – CodingIntrigue 2014-08-28 09:10:01

+0

更新小提琴的作品。 – user3412075 2014-08-28 09:14:03

1

爲什麼寫循環,同樣可以通過一個單一的行語句:)

 $("#daySelect_1").val("wed");