簡體   English   中英

未捕獲的類型錯誤javascript

[英]uncaught type error javascript

我想進行性格測試。但是當我單擊“下一個問題”按鈕時,我只能從questions.json獲得第一個問題,我遇到此錯誤“ Javascript Uncaught TypeError:無法讀取未定義的屬性'length'”

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);

我認為您正在調用沒有任何參數的renderQuestion 因此data.length可能會data.length錯誤。

不知道哪一行肯定會引發錯誤(提示:請同時提供錯誤的行號),猜測我會說這是該行,您正在得到錯誤

_("test_status").innerHTML = "Question "+(pos+1)+"of"+data.length;

因此,請確保data具有length屬性

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM