2017-04-17 20 views
0

私は性格テストをしたいですが、私は質問から得ることができます。私は次の質問ボタンをクリックしたときに私はこのエラーを直面している "JavascriptキャッチされていないTypeError:キャッチされていないタイプのエラーjavascript

var pos = 0, test, test_status, question, choice, choices, chA,chB,chC,totalCheck = 0;//değişkenler 
var btn = document.getElementById("btn"); 
var ourData; 
btn.addEventListener("click",function() { 
var ourRequest = new XMLHttpRequest(); 
    ourRequest.open('GET','questions.json'); 
    ourRequest.onload = function() { 
     ourData = JSON.parse(ourRequest.responseText); 
     renderQuestion(ourData); 

    } 

    ourRequest.send(); 
}) 



var counters = [A=0,B=0,C=0]; 
function _(x){ 
return document.getElementById(x);//html dom 
} 
function renderQuestion(data){ //soru soran fonksiyon 
test = _("test"); //dom ile test div ini seç 
if(pos >= 4){ 
    for(var i = 0;i<choices.length;i++){test.innerHTML += "<h2>Sonuç : "+data[i].soru+" dan "+ counters[i] +" kadar işaretledin</h2>";}// test divine sonucu yazdır 
    _("test_status").innerHTML = "Test Completed"; // "test_status" başlığına test bitti yazdır 
    pos = 0; // pos tekrar 0 yap 
    correct = 0; // dogru sayısını tekrar 0 yap; 
    return false; //false döndür 
} 


_("test_status").innerHTML = "Question "+(pos+1)+"of"+data.length; // "test_status başlığına hangi soruda olduğunu yazdır 
question = data[pos].soru; // questions listesinden 0. yani soru kısmını question değişkenine ata 
chA = data[pos].siklar1; // 1.cevap 
chB = data[pos].siklar2; // 2.cevap 
chC = data[pos].siklar3; // 3.cevap 
test.innerHTML = "<h3>"+question+"</h3>"; //soruyu yazdır 
test.innerHTML += "<input type='checkbox' name='choices' value='A'>"+chA+"<br>"; //1.cevabı yazdır 
test.innerHTML += "<input type='checkbox' name='choices' value='B'> "+chB+"<br>"; //2.cevabı yazdır 
test.innerHTML += "<input type='checkbox' name='choices' value='C'> "+chC+"<br><br>"; //3.cevabı yazdır 
test.innerHTML += "<button class='button' onclick='checkAnswer()'> NEXT QUESTİONS >> </button>" //cevabı kontrol et fonksiyonunu cağır 
} 
function checkAnswer(){ 
choices = document.getElementsByName("choices"); // seçenekler domunu seç 
if(choices[0].checked){ 
    if(choices[1].checked || choices[2].checked){ 
     findChecked(choices); 
    } 
    else{ 
     counters[0]+=2; 
    } 
} 
else if(choices[1].checked){ 
    if(choices[0].checked || choices[2].checked){ 
     findChecked(choices); 
    } 
    else{ 
     counters[1]+=2; 
    } 
} 
else if(choices[2].checked){ 
    if(choices[0].checked || choices[1].checked){ 
     counters[2]++; 
    } 
    else{ 
     counters[2]+=2; 
    } 
} 
pos++; // pozisyonu 1 arttır 
renderQuestion(); //render questionsu tekrar çağır 
} 
function findChecked(answers) { 
for (var i = 0; i < answers.length; i++) { 
    if (answers[i].checked == true) { 
     counters[i]++; 
     totalCheck++; 
    } 
} 
} 
window.addEventListener("load", renderQuestion, false); 
+0

場所を確認するためにコンソールを使用していることを確認し、何が原因でエラーが発生 – LGSon

答えて

0

「の未定義の私は、あなたが任意のパラメータなしrenderQuestionを呼んでいると思います。したがって、data.lengthがエラーを投げている可能性があります。

0

(ヒント:だけでなく、エラーの行番号を記入してください)確認のため、エラーをスローしているライン知らず、私はそれはあなたが

上のエラーを取得している。このラインかなと思うの推測では、 _("test_status").innerHTML = "Question "+(pos+1)+"of"+data.length;

ので

datalength属性

関連する問題