我有3個HTML頁面,其中2頁各有問題1和問題2。第3頁顯示測試的分數。我設計了網頁,現在我想跟蹤用戶分數。我不允許使用本地存儲,Cookie,數據庫或會話。我想將變量(追蹤每個用戶的答案)從一個html頁面傳遞到另一個頁面,而不使用本地存儲或會話,cookie或數據庫。無法從JavaScript傳遞後檢索變量
現在在我的外部js文件中,有功能getAnswer1(form)
它存儲用戶答案並將數組傳遞到quiz_2.html file
。我在網上找到一個例子來傳遞一個變量,但在第二個函數getAnswer2(form)
中檢索數組時遇到了問題,並且存儲了用戶的第二個輸入。我該如何解決這個問題?
HTML頁面1: 第一頁用戶選擇2個答案。簡單填寫空白問題並檢索答案。正如你所看到的,我用correct
分配了正確答案。
<div>
<form>
<input type="radio" name="one" value="correct" class="firstRow"> Option 1 Mark 1: $650
<input type="radio" name="two" value="correct" class="secondRow"> Option 1 Mark 2: Twitter<br>
<input type="radio" name="one" value="incorrect" class="firstRow"> Option 2 Mark 1:$550
<input type="radio" name="two" value="incorrect" class="secondRow"> Option 2 Mark 2:Google<br>
<input type="radio" name="one" value="incorrect" class="firstRow"> Option 3 Mark 1:$650
<input type="radio" name="two" value="incorrect" class="secondRow"> Option 3 Mark 2:$650<br>
<input type="button" value="Submit & Next Question" onclick="getAnswer1(this.form)" class="firstRow">
<input type="button" value="Cancel & Clear Selection" onclick="clearOptions(this.form)">
</form>
</div>
我有一個外部js文件,其中包含存儲答案和執行必要計算的功能。我將用戶答案存儲在一個數組中。我打電話的第一個函數:
function getAnswer1(form) {
var results = [];
var a = [];
var value;
var checked = form.querySelectorAll("input[type=radio]:checked");
if(checked.length<2) {
alert('Please select an option');
return;
}
else {
var n = checked.length;
for(var i=0;i<n;i++) {
a.push(checked[i].value);
}
}
results.push(encodeURIComponent('key')+'='+encodeURIComponent(a))
location.href = 'quiz_2.html?'+results.join('&');
}
第二個問題:
<div>
<form>
<input type="radio" name="radio" value="correct" class="firstRow"> NASA.Gov
<input type="radio" name="radio" value="incorrect" class="secondRow"> Data.Gov <br>
<input type="radio" name="radio" value="incorrect" class="firstRow"> Facebook
<input type="radio" name="radio" value="incorrect" class="secondRow"> XYZ.net <br>
<input type="button" value="Submit & Next Question" onclick="getAnswer2(this.form)" class="firstRow">
<input type="button" value="Cancel & Clear Selection" onclick="clearOptions(this.form)" class="secondRow">
</form>
</div>
的Javascript:
正如你可以看到下面在這裏我應該接受用戶的第二次測試輸入,並且報告最終成績到調查但難以檢索數組變量並存儲答案。
function getAnswer2(form) {
var value;
var retrieveArray = {};
var fs = location.search.replace('?', '').split('&');
for(var i=0,l=fs.length; i<l; i++){
var z = fs[i].split('=');
retrieveArray[decodeURIComponent(z[0])] = decodeURIComponent(z[1]);
}
var checked = form.querySelector("input[type=radio]:checked");
if(!checked){
alert('Please select an option');
}
else{
value = checked.value;
}
location.href = "survey.html";
}
首先我想確認我的理解。您想要在不使用任何類型的存儲從一個頁面到另一個頁面的情況下傳遞分數。在這裏,我建議你不要使用單獨的頁面,而是使用嚮導。您可以在一個頁面中獲得所有數據。 – Dhaval
@Dhaval我不允許使用本地,會話,cookies或數據庫。將變量從一個頁面傳遞到另一個頁面是必需的。我想出的唯一方法是存儲數組中的每個答案,並將數組變量從一頁傳遞到另一頁,以便在末尾引用該數組來計算分數 – user3497437
是的,我理解了這一點。但是我的觀點來自你的基地。爲什麼要使用單獨的頁面,而您可以輕鬆地使用嚮導進行集成和管理。這對你的目標也很容易。 – Dhaval