簡體   English   中英

動態填充的select元素將采用第一個選項的值,但不顯示其文本

[英]Dynamically populated select element will take the value of the first option but not display the text of it

   window.onload = function()
{
    document.addEventListener('deviceready', init, false);
    init();
}

function init()
{
   populateItem();
}

function populateItem()
{
    clearItem();
    var itemSel = document.getElementById("itemSelect");
    var x = 0;
    for(i=0; i<items.length; i++)
        {

            if(document.getElementById('itemType').value == items[i].Device)


                    {
                        itemSel.innerHTML +="<option value='" + items[i].Model + "'>"+items[i].Make + " " + items[i].Model+"</option>";
                    }
        }
    reload();

}

function clearItem()
{
    for(var ex=document.getElementById('itemSelect').length; ex >= 0; ex--)
        {
            document.getElementById('itemSelect').remove(ex);

        }

}

function reload()
{
    var container = document.getElementById("itemSelect");
    var content = container.innerHTML;
    container.innerHTML= content;
}
<!DOCTYPE html>

<html>

<head>
    <meta charset="utf-8" />
    <meta name="format-detection" content="telephone=no" />
    <meta name="msapplication-tap-highlight" content="no" />
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width" />

    <!--<meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline'; style-src 'self' 'unsafe-inline'; media-src *" /> -->
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" />
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
  <script type="text/javascript" src="cordova.js"></script>
    <script type="text/javascript" src="js/index.js"></script>
    <script type="text/javascript" src="js/InventoryItems.js"></script>

    <link rel="stylesheet" type="text/css" href="css/index.css" />
    <title>Inventory</title>
</head>

<body>
    <div id="content">

    <select id="itemType" onchange="populateItem()">
        <option value='Computer'>  Computer</option>
        <option value='Monitor'>  Monitor</option>
        <option value='Phone'>  Phone</option>
        <option value='Printer'>  Printer</option>
    </select>
    <select id="itemSelect"></select>

    </div>


</body>

</html>

每當我運行程序時,它都不會設置itemSelect來顯示所選選項的innerHTML。 它采用的值與我使用Google Developer來檢查itemSelect.value一樣,但不會顯示實際選擇的文本。 上面的代碼是我的js文件和我的html文件。 它正在從另一個js文件中提取項目值,但是我確定它正確地提取了值,因為我可以看到選項並通過更改itemSelected.value來選擇它們。 不管默認選擇是什么,它都不會在select元素上僅生成可視文本,直到在select元素中選擇了其他選項為止。

您需要再次設置select元素的selectedIndex屬性,因為您弄亂了它的innerHtml。

只需將其設置為:

itemSel.selectedIndex = "1";

該值應該是您要選擇的選項元素的索引。

這是selectedIndex的信息: http : //www.w3schools.com/jsref/prop_select_selectedindex.asp

通過創建一個div來容納選擇元素,然后清除div和附加到onchange事件的createElement(select)來修復此問題。

暫無
暫無

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

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