1

私は現在、変数(またはデフォルト値)に基づいて選択さ<select>れるドロップダウンリストを作成しようとしています。ただし、オプションリストを次のように表示したくありません。<option>URL

name_az、name_za、最新、最古

それはあまりユーザーフレンドリーではありませんが、コードでこれらを使用したくありません。

名前AZ(デフォルト)、名前ZA、最新のバンド、最も古いバンド

明らかにそれは私自身のためにはるかに多くの仕事をしているからです。

各オプションリストを手動で作成し、オプション<cfif>の各セットをチェックして、目的のオプションを選択することができます。ただし、設計者なら誰でも知っているように、ループリストを作成し、そのリストに2つの値を追加するだけで、多くの余分な不要な作業が発生します。

以下は私が現在持っているコードです。

<select>
    <cfset sortlist = "name_az|Name A-Z (Default),name_za|Name Z-A,newest|Newest Bands,oldest|Oldest Bands">
    <cfoutput>
        <cfloop list="#sortlist#" delimiters="," index="sortpair">
            <cfloop list="#sortpair#" delimiters="|" index="sortphrase">
                <option value="#sortphrase#">#sortphrase#</option>
            </cfloop>
        </cfloop>
    </cfoutput>
</select>

私はそれがこれを返すことを望みます:

<select>
    <option value="name_az">Name A-Z (Default)</option>
    <option value="name_za">Name Z-A</option>
    <option value="newest">Newest Bands</option>
    <option value="oldest">Oldest Bands</option>
</select>

ただし、明らかに、sortphraseリストされている場所に戻るように要求しているので、次のように返されます。

<select>
    <option value="name_az">name_az</option>
    <option value="Name A-Z (Default)">Name A-Z (Default)</option>
    <option value="name_za">name_za</option>
    <option value="Name Z-A">Name Z-A</option>
    etc..
</select>

リスト内の値の量を<cfloop>ループできる場所を作成する方法はありますか?x

4

1 に答える 1

5

ネストされたループを使用するというあなたの考えは私には間違っているようです。|として扱っても大丈夫です 分離されたリストですが、なぜそれをループするのですか?必要な数の2倍のオプションタグができあがります。試す

<cfloop list="#sortlist#" delimiters="," index="sortpair">
    <option value="#listFirst(sortpair, '|')#">#listLast(sortpair, '|')#</option>
</cfloop>

また、一般的に、アレイはColdfusionのリストよりも高速に実行されます。このような小さなものの場合、それは実際には重要ではありませんが、少なくともループオーバーには、通常、リストの代わりに配列を使用します(ただし、2つの別々の部分に|-区切りリストを使用する可能性があります)。

または、キーと値のペアごとに構造体を使用することもできます。たとえば、連想配列表記を使用してそれを行う別の方法は次のとおりです。

<cfset sortarray = [
    {name = "name_az", value = "Name A-Z (Default)"},
    {name = "name_za", value = "Name Z-A"},
    {name = "newest", value = "Newest Bands"},
    {name = "oldest", value = "Oldest Bands"}
]>

<cfloop array="#sortarray#" index="sortstruct">
    <option value="#sortstruct['name']#">#sortstruct['value']#</option>
</cfloop>

または構造体表記を使用する:

<cfloop array="#sortarray#" index="sortstruct">
    <option value="#sortstruct.name#">#sortstruct.value#</option>
</cfloop>
于 2013-03-21T12:29:20.467 に答える