如何动态填写下拉菜单?

我得到了一些代码(HTML和JavaScript),该代码创建了一个具有三列和动态行的表。我想有一个基于第一列条目的下拉菜单。因此,在完成我的表格后,应填写下拉菜单。第一列可以有多个相同的条目。因此,有必要在我的下拉菜单中只显示一次。目前,我只有一个静态下拉菜单。请参阅下面的代码。该程序对静态下拉菜单的效果很好。


<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">

    <table id="myTable">

        <colgroup>

            <col width="150" style="background-color:red"></col>

            <col width="165"></col>

        </colgroup>

        <tr  style ="background-color:grey">

            <th>plane

                <select id="modelRangeDropdown" onchange="filterReports()">

                    <option selected="selected">All</option>

                    <option>number1</option>

                    <option>number2</option>                        

                </select>                   

            </th>   

            <th>Datum</th>

            <th>Secret</th>

        </tr>

        <xsl:for-each select="logstore/plane/trigger">

            <tr>

                <td><xsl:value-of select="../Name"/></td>

                <td><xsl:value-of select="date"/></td>

                <td><xsl:value-of select="secret"/></td>

            </tr>

        </xsl:for-each>

    </table>

    <script type="text/javascript" src="/../../../filterReports.js"></script>           

</body>

</html>

</xsl:template>

</xsl:stylesheet>


杨__羊羊
浏览 162回答 1
1回答

慕田峪4524236

如果可以使用XSLT 2.0,则可以使用distinct-values和编写xsl:for-each类似的代码<select id="modelRangeDropdown" onchange="filterReports()">&nbsp; &nbsp; <option selected="selected">All</option>&nbsp; &nbsp; <xsl:for-each select="distinct-values(logstore/plane/Name)">&nbsp; &nbsp; &nbsp; &nbsp; <option value="{.}">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <xsl:value-of select="." />&nbsp; &nbsp; &nbsp; &nbsp; </option>&nbsp; &nbsp; </xsl:for-each></select>&nbsp;&nbsp;另一方面,如果限于XSLT 1.0,则需要使用一种称为Muenchian Grouping的技术。您将这样定义一个键:<xsl:key name="planes" match="plane/Name" use="." />然后,要获得不同的值,您可以这样做.....<select id="modelRangeDropdown" onchange="filterReports()">&nbsp; &nbsp; <option selected="selected">All</option>&nbsp; &nbsp; <xsl:for-each select="logstore/plane/Name[generate-id() = generate-id(key('planes', .)[1])]">&nbsp; &nbsp; &nbsp; &nbsp; <option value="{.}">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <xsl:value-of select="." />&nbsp; &nbsp; &nbsp; &nbsp; </option>&nbsp; &nbsp; </xsl:for-each>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</select>&nbsp;&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript