未捕获的TypeError:无法读取未定义的属性“图像”

时间:2015-04-02 01:13:19

标签: javascript json frontend

     $(function() {


var retrievedtext1 = localStorage.getItem('t1');
var retrievedtext2 = localStorage.getItem('t2');

      retrievedtext1=JSON.parse(retrievedtext1);
      retrievedtext2=JSON.parse(retrievedtext2);


   document.getElementById("option1").innerHTML = retrievedtext1;

   document.getElementById("option2").innerHTML = retrievedtext2; 

          var changeq=0;
    var obj= OS.length;

    console.log(obj);
          document.getElementById("element").src =OS[changeq].image ;

    $('#Fairly1').click(function() {

        alert('value = 1'+"--"+OS[changeq].image);

          changeq +=1;

        document.getElementById("element").src = OS[changeq].image ;


        if (changeq>=OS.length){

            window.location.assign("start.html");

        }



});
    $('#between').click(function() {
           alert('value = 2'+"--"+OS[changeq].image);
        changeq +=1;              
        document.getElementById("element").src = OS[changeq].image ; 

});
    $('#Both').click(function() {
            alert('value = 5'+"--"+OS[changeq].image);
        changeq +=1;              
        document.getElementById("element").src = OS[changeq].image ; 

});
    $('#Non').click(function() {
            alert('value = 6'+"--"+OS[changeq].image);
        changeq +=1;              
        document.getElementById("element").src = OS[changeq].image ; 

});
    $('#x').click(function() {
            alert('value = 4'+"--"+OS[changeq].image);
        changeq +=1;              
        document.getElementById("element").src = OS[changeq].image ; 

});
    $('#Fairly2').click(function() {
            alert('value = 3'+"--"+OS[changeq].image);
        changeq +=1;              
        document.getElementById("element").src = OS[changeq].image ; 

});

         });


   function goBack() {
    window.history.back();
}

我一直收到此错误:Uncaught TypeError: Cannot read property 'image' of undefined

我想要它,以便在我遍历JSON对象之后,我重定向到另一个页面并保存用户在一个数组中执行的操作以便稍后将其发送到db。

1 个答案:

答案 0 :(得分:0)

考虑

changeq +=1;
document.getElementById("element").src = OS[changeq].image ;

在访问changeq之前,您首先增加OS[changeq].image。您没有检查changeq是否仍然是数组的有效索引!

最简单的解决方案是切换线条。如果因为它改变了所需的行为而无法做到这一点,请在两者之间移动检查:

changeq +=1;
if (changeq>=OS.length){
    window.location.assign("start.html");
    return;
}
document.getElementById("element").src = OS[changeq].image ;