0

以下のコードで呼び出しているjQuery関数があります。この関数は、「QAList」の「words:」領域に表示されている単語を検索し、それらの単語だけを太字にします。これはこのコードで正常に機能しており、「デモ」と「または」という単語は太字になっています。

    $("[id$=QAList]").wrapInTag({
      words: ['Demo User', 'or'],
      tag: '<selected>'
    });

現在、ラベルまたはテキストボックスから「words:」リストを渡そうとしていますが、何らかの理由で正しい情報を渡せず、実際に何が渡されているかを100%確認できません。

これは、lblSelectedQAラベルからプルするようにコードを変更した方法です。

    $("[id$=QAList]").wrapInTag({
      words: [$("[id$=lblSelectedQA]").html()],
      tag: '<selected>'
    });

ラベルが何らかの理由で機能しなかった場合に備えて、テキストボックスから試してみました。

    $("[id$=QAList]").wrapInTag({
      words: [$("[id$=lblSelectedQA]").val()],
      tag: '<selected>'
    });

ラベルとテキストボックスをアラートに入れると、必要なものが表示されます。次のように返されます。

「デモユーザー」、「または」

他の場所から値を渡そうとしているので、「words:」の後に間違った構文がありますか?

ありがとう!

**以下のiurisilvioの回答に応じて編集してください

'Demo User', 'or'あなたの答えに応えて、私は一重引用符と余分なスペースを取り除くためにテキストを入力するものの両方でコードを少し変更しました。これで、次のようにDemo User,orなります。単一の結果で正常に機能します。

次に、インデックス[0]または[1]を追加すると、配列内の値の1つに対して機能する.split( "、")を追加しようとしましたが、すべての配列項目に対してスタンドアロンではありません。

Utkanosは基本的に同じことを示していますが、スペースと一重引用符を削除する方法を追加するだけで、これ以上行う必要はありません。

これは、単一の結果に対して機能する私のコードです。

    $("[id$=QAList]").wrapInTag({
      words: [$("[id$=lblSelectedQA]").html().split(",")],
      tag: '<selected>'
    });

ただし、複数の結果が返される場合は、インデックスを追加しないと機能しませんが、ハードコーディングしたインデックスに対してのみ機能します...この配列にいくつあるかわからないため、オプションではありません。

    $("[id$=QAList]").wrapInTag({
      words: [$("[id$=lblSelectedQA]").html().split(",")[0]],
      tag: '<selected>'
    });

また

    $("[id$=QAList]").wrapInTag({
      words: [$("[id$=lblSelectedQA]").html().split(",")[1]],
      tag: '<selected>'
    });

ループすることなくすべての配列アイテムを取得する方法はありますか?

ありがとう!

**解決策のために編集:

追加したものの周りに角かっこをドロップする必要がありました。私はそれを理解して戻ってきました、そしてUtkanosはちょうど同じことを投稿しました:)

作業コード:

    $("[id$=QAList]").wrapInTag({
      words: $("[id$=lblSelectedQA]").html().split(","),
      tag: '<selected>'
    });

ありがとう!!

4

2 に答える 2

2

このように、単語 var は等しい["'Demo User', 'or'"](1 つの要素)。文字列を分割すると、必要なものが得られます。

// suposing your_text is right
words: your_text.split(",")

もちろん、それは単純化されたソリューションです。のようなものを取得したい場合'word, 1', 'word 2'は、問題に対するより優れたパーサーが必要ですが、それが方法です。

于 2012-07-11T15:26:03.053 に答える
1

wordsパラメータは配列でなければなりません。文字列'Demo User', 'or'は、これらの値を含む配列からの出力のように見えますが、最終的には配列ではなく文字列です。

つまり、実際の配列ではなく、少し配列のように見える文字列を渡しています。

あなたが言うように、要素から取得している文字列が であると仮定すると'Demo User', 'or'、区切り文字で分割することにより、それを配列に分割する必要があります-あなたの場合はコンマとスペースです。'また、さまざまなトークンの周りを削除する必要があります。

$("[id$=QAList]").wrapInTag({
    words: $("[id$=lblSelectedQA]").val().replace(/'/g, '').split(, ?/),
    tag: '<selected>'
});
于 2012-07-11T15:27:26.707 に答える