Javascript 未捕获类型错误:无法读取属性';图像';未定义的

Javascript 未捕获类型错误:无法读取属性';图像';未定义的,javascript,json,frontend,Javascript,Json,Frontend,我不断收到此错误:未捕获类型错误:无法读取未定义的属性“image” 我需要它,以便在循环JSON对象之后,重定向到另一个页面,并将用户所做的保存在一个数组中,以便稍后将其发送到db。 $(function() { var retrievedtext1 = localStorage.getItem('t1'); var retrievedtext2 = localStorage.getItem('t2'); retrievedtext1=JSON.parse(retr

我不断收到此错误:
未捕获类型错误:无法读取未定义的属性“image”

我需要它,以便在循环JSON对象之后,重定向到另一个页面,并将用户所做的保存在一个数组中,以便稍后将其发送到db。

     $(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();
}
在访问操作系统[changeq].image之前,首先增加
changeq
。您没有检查
changeq
是否仍然是数组中的有效索引

最简单的解决办法是切换线路。如果由于更改了所需的行为而无法执行此操作,请在以下两者之间移动签入:

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

变量
OS
中有什么?您应该执行
console.log(OS[changeq])可能是
未定义的
,因此当您尝试引用
操作系统[changeq].image时会出现错误。我们在这里真的没什么可做的了,因为您的数据可能不是您认为的那样,所以您在尝试访问不存在的数据时会出错。错误消息有什么不清楚的地方?你的问题是什么?OS是JSON对象,我已经编写了代码并显示了图片和循环,但我想在完成循环后将用户引导到另一个页面,我试图使用if并与JSON对象数组进行比较。通常,当我制作var obj=OS.length时;控制台日志(obj);我得到的是数组长度和OS[changeq]。image给我图像源,这样我就可以显示iti在第一个按钮上测试,只是为了看看它是否工作,以及它循环到结束时发生了什么,然后我得到了这个错误Uncaught TypeError:无法读取undefinedIt的属性“image”,但现在当它开始时,我有另一个问题。它从数组中的第一张图片[0]开始,在我单击“公平”按钮后,它再次显示第一张图片,直到我再次单击,它才更改此项,因为我在显示图片后增加了changeq。这就是为什么我在最后建议一个替代解决方案。当然,您也可以用
1
而不是
0
初始化
changeq
changeq +=1;
if (changeq>=OS.length){
    window.location.assign("start.html");
    return;
}
document.getElementById("element").src = OS[changeq].image ;