フォームとしてクイズを作成しましたが、フォームがクリックされた後に結果が表示されます。それぞれの結果は値として出てきます。私はMarketoによって生成されたフォームに結果を入れる必要があります(marketoについての知識は今必要ではありません)。値はクリック後に表示する必要がありますが、値は表示されていますが、値は正しくありません。.selectedIndexのフォームが正しく入力されない問題
何らかの理由で値に対応する正しいインデックスを呼び出すことができません。どんな助け?
フォームコード:
<select id="personaBucket" name="personaBucket" class="mktoField mktoHasWidth mktoRequired" style="width: 300px;">
<option value="">I need to work on...</option>
<option value="Customer">Customer</option>
<option value="Compliance">Compliance</option>
<option value="Continuity">Continuity</option>
</select>
JS(クイズ結果の値を代入する):
if (customer < continuity && customer < compliance) {
result = customer;
} else if (compliance < continuity && compliance < customer) {
result = compliance;
} else if (continuity < compliance && continuity < customer) {
result = continuity;
} else {
result = continuity;
}
grading = [
{score:customer,value:"customer",feedback:"You need to work on customer experience. Fill out the form below to learn more."},
{score:compliance,value:"compliance",feedback:"You need to work on compliance. Fill out the form below to learn more."},
{score:continuity,value:"continuity",feedback:"You need to work on continuity. Fill out the form below to learn more."}
];
JS(値を有することがクイズ結果に相当):
var select = document.getElementById("personaBucket");
var persona = "Persona is: ";
var i;
for (i = 0; i < select.length; i++) {
persona=persona + "\n" + select.options[i].text + " has index: " + select.options[i].index;
}
console.log(persona);
for (i = 0; i < select.length; i++) {
var selectNone = function() {
document.getElementById("personaBucket").selectedIndex = "0";
};
var selectCustomer = function() {
document.getElementById("personaBucket").selectedIndex = "1";
};
var selectCompliance = function() {
document.getElementById("personaBucket").selectedIndex = "2";
};
var selectContinuity = function() {
document.getElementById("personaBucket").selectedIndex = "3";
};
}
for(i=0; i<grading.length; i++) {
if(result == grading[i].score) {
if (grading[i].value = customer) {
selectCustomer();
}
else if (grading[i].value = compliance) {
selectCompliance();
}
else if (grading[i].value = continuity) {
selectContinuity();
}
else {
selectContinuity();
}
}
}
インデックスを修正してもインデックスが間違っています#
編集: selectIndexを削除しましたが、最大の問題は以下の値の周りに入れず、以下のRobのように=を==に置き換えることでした。完全に今
for(i=0; i<grading.length; i++) {
if(result == grading[i].score) {
personaVal = grading[i].value;
}
}
if (personaVal == "customer") {
$('#personaBucket').children().remove().end().append('<option selected value="customer">Customer</option>') ;
}
if (personaVal == "compliance") {
$('#personaBucket').children().remove().end().append('<option selected value="compliance">Compliance</option>') ;
}
if (personaVal == "continuity") {
$('#personaBucket').children().remove().end().append('<option selected value="continuity">Continuity</option>') ;
}
作品、助けのための感謝:これにより
for(i=0; i<grading.length; i++) {
if(result == grading[i].score) {
if (grading[i].value = customer) {
selectCustomer();
}
else if (grading[i].value = compliance) {
selectCompliance();
}
else if (grading[i].value = continuity) {
selectContinuity();
}
else {
selectContinuity();
}
}
}
:だから、私はこれを置き換えます!
リンターのようなリンターを使用すると、すぐに小さなエラーを発見するのに役立ちます。 –
また、 'for'ループの中で変数に代入しています。値は最後の反復の値になります。とにかく関数は同じなので、 'for'ループはその目的がありません。 –