簡體   English   中英

通過ajax調用填充下拉列表后,設置所選索引

[英]Setting the selected index after populating a dropdown list via ajax call

我正在通過ajax調用填充選擇標簽選項,然后嘗試使用javascript在下拉列表中設置所選項目。 但這似乎不起作用。

在我的Index.cshtml頁面中,我有這樣的select標記

<select id="ddlState">
</select>

在同一頁面上,我使用ajax調用來填充選項列表。

$.ajax({
    url: "/api/vmsApi",
    success: function (data) {
        console.log(data)
        for (var i = 0; i < data.length; i++)
        {
            $("#ddlState").append('<option value="'+data[i]+'">' + data[i]+ '</option>')
        }
    }
});

然后作為測試,我嘗試將selectedIndex設置為大於0的值。如下所示:

document.getElementById("ddlState").selectedIndex = 2;

無論我給所選索引提供什么值,..總是選擇第一項。

為什么是這樣?

我的下拉列表確實填充了所有值。 只是selectedIndex不會改變。

您確定以下內容無效?

$.ajax({
    url: "/api/vmsApi"
})
.then(
  (data) => {
        console.log(data);
        const select = $("#ddlState");
        data.forEach(
          data =>
            select.append(
              '<option value="'+
              data+
              '">'
              + data
              + '</option>'
          )
        );
        select[0].selectedIndex = 2;
    }
)
.then(
  undefined
  ,reject => console.error(reject)
);

如果這不起作用,請在控制台選項卡中使用Chrome(F12)中的dev工具,按Control + Shift + F並查找selectedIndex也許頁面上還有其他代碼可以設置選定的索引。

為了解決您的評論:如果控制台中顯示適合的值,則控制台將按照原樣顯示值。

當您需要擴展一個值時,它將顯示現在的值,而不是您控制台記錄它時的值。 您可以在devtools控制台中運行以下代碼並親自查看:

var i = 0;
var arr = [];
while(++i<300){
  arr.push({value:i});
}
console.log("shows new values when you expand even though the log was before the change:",arr)
console.log("shows old value because no need to expand:",arr[0])
arr.forEach(x => x.value += 10);
console.log("shows new values because it is executed after change:",arr)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM