1

私が達成しようとしているのは、埋め込まれたデータを取得し、特定の方法 (色、位置など) で出力することです。たとえば、埋め込みデータを<div class="previous">$e://Field/DTBEG}</div>質問テキストのように配置しますが、それを取得して入力フィールドのすぐ下に挿入したい (クアルトリクスでは直接実行できないと思われるため、ここではカスタム JS が必要です)。

したがって、質問文には次のものがあります。

<div>1a. Reporting Period: Beginning</div>
<div class="previous date">${e://Field/DTBEG}</div>

ここで、DTBEGデータは空の場合もあれば、日付を表す 5/6 桁の場合もあります。調査のヘッダーには次のものがあります。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
    var $j = jQuery.noConflict();
</script>

ドキュメントで説明されているように

そのため、jQuery では を使用してフィールドの前のデータにアクセスできます$j(".previous")が、問題は、Qualtrics が実際に<div class="previous date"></div>私の質問に 2 つ (質問の種類によってはそれ以上) のフィールドを配置することです。各埋め込みデータには追加の「前の」divがある可能性があるため、これは非常に誤解を招く可能性があるため、埋め込みデータが空だったのか、それとも重複したフィールドなのかを判断する方法はありません.

...
<h2 class="noStyle">
    <label class="QuestionText BorderColor">
        <div>1b. Reporting Period: End</div>
        <div class="previous date">33113</div> <!-- first instance of the div, this seems to be visible -->
    </label>
</h2>
<fieldset>
    <div class="QuestionBody">
        <table class="ChoiceStructure" border="0" cellpadding="0" cellspacing="0" summary=" 1b.&amp;nbsp; Reporting Period:&amp;nbsp; End&amp;nbsp; 33113 " style="width:710px">
        <caption class="QuestionText BorderColor">
            <div>1b. Reporting Period: End</div>
            <div class="previous date">33113</div> <!-- second instance of the div, this seems to be hidden -->
        </caption>
        ...
    </div>
</fieldset
...

私がやろうとしていることを達成するためのより良い方法はありますか? そのために独自の JS を作成しても問題ありませんが、これまでのところ、Qualtrics の HTML 出力が期待どおりではないため、問題が発生しています。

4

1 に答える 1

1

必要な質問で次の JavaScript を試してください。

Qualtrics.SurveyEngine.addOnload(function()
{

$$('.QuestionBody')[0].insert($$('.previous')[0]);

});

jQuery を使用して面倒なことをするのではなく、焼き付けられた PrototypeJS を使用します。セレクター

$$('.class')

要素の配列を返します。「前の」クラスには要素が 1 つしかないため、それは配列内の最初で唯一の要素です。「.QuestionBody」配列に選択された数は、ページ上の質問の数とそれらが表示される場所に基づいて調整する必要があります。

また、注目に値する

$('idName') 

ID を持つ要素を選択するために使用でき、配列を返しません。

于 2015-06-19T17:34:43.823 に答える