2016-04-04 15 views
0

Yani javascript ve jquery için oldukça yeni. İyi bir başlangıç ​​noktası olan öğreticilere bakıyorum, ancak bunların hepsi doğru olan bir soruyu içeriyor gibi görünüyor, bu yüzden eğer kullanıcıların örneğin bir ifadeyle eşitse, bir yanıtın doğru olup olmadığını bir işlev içinde kontrol edebiliyorlar. Ben ancak yapmak istiyorum nejQuery yarışması uygulaması nokta bazlı cevaplama sisteminin nasıl uygulanacağı?

if (answers[i] == userAnswers[i]) { 
     flag = true; 
    } 

örneğin

var 1 = 50 
var 2 = 0 
var 3 = 10 

Soru 1

var a = 1 
var b = 2 
var c = 3 
var d = 3 

Soru 2

potansiyel cevaplar her birine bağlı bir değeri farklı olduğu
var a = 3 
var b = 1 
var c = 2 
var d = 3 

Ne w Böyle bir şey yapmanın en iyi yolu olabilir mi?

+0

Bir cevap nasıl "tamam" olabilir? – John

+0

Bunu nasıl uygularsınız? Her sorunun daima 'iyi' bir cevap olarak 'a' olması gerekir mi? – Hawkeye

+0

Bu isimleri örnek olarak şimdi sayılara güncelledim. –

cevap

1

Öncelikle bir varsayım:

  • answers[i] kullanıcısoruya cevap olarak aldı ne bir sayı içeriyor(Not: answers[i] aslında bir karakter ise, answers[i] değerini 'a' ascii değeriyle çıkararak tamsayı değerini alabilirsiniz.

sen ne yapmak istediğinizi, basitçe i soru endeksidir 2 boyutlu bir dizi score[i][j] tanımlamak yapmak için, ve j (yani asnwer i soruya) seçeneğini sayıdır, daha sonra score[i][j] verir Bu soruya verilen puan. Yukarıda açıklandığı gibi Yani sorusuna 1 için diyelim seçeneklerdir answers[i] cevabın değerini içerdiğinden (yani = iyi, b = yanlış, ...), o zaman,

//set the values for the answers 
score[1][1] = good; score[1][2] = wrong; score[1][3] = wrong; score[1][4] = okay 
score[2][1] = okay; score[2][2] = good; score[2][3] = wrong; 
//more score setting 

//get the value of the answer 
var score_q1 = score[1][answers[1]] 
var score_q2 = score[2][answers[2]] 

yani olurdu Bir sayı olarak, score[question_nb][answers[question_nb]] numaralı telefonu arayarak, bu soru için puan alırsınız. Bu durumda, if ifadeleri yok. Toplam puanı almak istiyorsanız, sadece tüm soruların üzerine gelin ve bu soru için puan toplayın.

+0

Yardımınız için çok teşekkür ederim –

+0

Sadece çözümü şimdi test ediyor ve bir "" Yakalanmamış TypeError: alınıp alınamayan '1' özelliğini 2 boyutlu dizide ayarlayamıyoruz. 'Cevapların değerlerini ayarla' bölümünden önce diziyi başlatmak zorunda mıyım yoksa 'var puan = [[0,1], [0,2]] 'vs olarak mı oluşturmalıyım? –

+0

Diziyi ilk olarak bildirmeyi denediniz mi? – Hawkeye

0

En iyi yol bir anahtar/değer çifti olur. Json gibi bir şey deneyebilirim. Sen json aşağıda benzer görünümde olacaktır 50 kadar iyi bir anahtar ve (puan için) bir değer ile json olurdu:

var kvPair = {"good":"50", "wrong":"0", "okay":"10"}; 

sonra birisi o puanı belirlemek için ajax aday olacağını bir cevap tıkladığında:

$.ajax({ 
    type: "POST", 
    dataType: "json", 
    url: "someUrl", 
    data: kvPair, 
    success: function (data) { 
     //do something with score data 
    }, 
    error: function (event) { 
     ShowErrorLabel("ERROR in ajax call('someUrl'): \n" + "Error : " + event.status + " - " + event.statusText); 
    } 
}); 
İlgili konular