未捕获的类型错误: 无法读取未定义的属性“图像”

Uncaught TypeError: Cannot read property 'image' of undefined

本文关键字:未定义 读取 属性 图像 类型 错误      更新时间:2023-09-26
     $(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 对象后,我重定向到另一个页面并将用户所做的保存在一个数组中,以便稍后将其发送到数据库。

考虑

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 ;