将搜索框更改为下拉列表

时间:2015-10-03 20:33:53

标签: javascript html xml

搜索框将项目名称与xml中的项目名称相匹配。我需要做的是将这些项目放在下拉菜单中。我一直在寻找一种方法来获取xml中的项目,而无需在html文件中进行硬编码。这是我的代码:

        <!DOCTYPE html>
        <html>
        <head>

        <style type="text/css">
        table { border-collapse:collapse }
        td { padding:10px; border:solid #000 1px } 
        td.center { text-align:center }
        td.noBox { border:none }
        </style>

        <script type="text/javascript">

        var items;

        if (window.XMLHttpRequest) { // IE7+, Firefox, Chrome, Opera, Safari
            var xmlhttp=new XMLHttpRequest();
        } else { // IE6, IE5
            var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.open("GET","stock.xml",false);
        xmlhttp.send();
        xmlDoc=xmlhttp.responseXML;
        items=xmlDoc.getElementsByTagName("item"); 


        function findItem() {
           var searchItem=document.getElementById("searchItem").value;
           for (var i=0; i<items.length; i++) {
              product=items[i].getElementsByTagName("name")[0].childNodes[0].nodeValue;


              if (product==searchItem) {
                 id=items[i].getAttribute("id");
                 stockLevel=items[i].getElementsByTagName("numInStock")[0].childNodes[0].nodeValue;
                 price=items[i].getElementsByTagName("price")[0].childNodes[0].nodeValue;

                 document.getElementById("id").innerHTML=id;
                 document.getElementById("stockLevel").innerHTML=stockLevel;
                 document.getElementById("price").innerHTML=price;
              }
           }
        }   

        </script>
        </head>

        <body>
        <h1>Product list</h1>


        <script type="text/javaScript">
        document.write("<p>There are " + items.length + " items available</p>");
        </script>

        <table>
        <tr><th>id</th><th>Product</th><th>Stock level</th><th>Price</th></tr>
        <tr><td class="noBox" id="id"></td>

            <td><input type="select" size="20" id="searchItem" value="Enter item">
                <input type="button" value="Search" onclick="findItem()"></td>


            <td class="center" id="stockLevel"></td>
            <td class="center" id="price"></td>    
        </tr>
        </table>    

        </body>
        </html>

1 个答案:

答案 0 :(得分:0)

看起来你正在寻找的只是从items数组中获取信息。

您需要在javascript中循环遍历items数组并将其添加到选择列表中。

这样的事情应该让你开始:

<select id="dropdownlistofitems">
</select>

fillDropdown();
function fillDropdown(){
$.each(items, function (index, value) {
$('#dropdownlistofitems').append($('<option/>', { 
    value: value,
    text : value 
}));
});   
}