- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这里是一段代码,用于通过我的网络应用程序幻灯片跟踪和处理用户的进度,一切似乎都工作正常,直到我到达该函数的第9次执行。此时我收到此错误:
Uncaught TypeError: Cannot read property 'sequence' of undefined
不幸的是,我不知道如何调试代码或意识到导致错误的原因,我需要有人来修复它。
看起来这个 for 循环导致了错误,但为什么呢?
// Fill planedSlides array
for(let a = 1; a < current_slide; a++){
if(slides[a - 1].sequence == nextSequence && slides[a - 1].plan == true){
console.log('a: ' + a)
planedSlides.push(a);
}
}
// Global Variables initiate at course start and modified throught the slides
// sequence A =>> serie 1 ---- serie 1 ---- serie 3 ---- serie 4
var slides = [
{ id: 1, difficulty: 2, performance: 20, guided_phrases: [], sequence: "A", plan: false, planned: 0 },
{ id: 2, difficulty: 4, performance: 30, guided_phrases: [], sequence: "A", plan: true, planned: 0 },
{ id: 3, difficulty: 4, performance: 40, guided_phrases: [], sequence: "A", plan: false, planned: 0 },
{ id: 4, difficulty: 4, performance: 20, guided_phrases: [], sequence: "B", plan: true, planned: 0 },
{ id: 5, difficulty: 4, performance: 50, guided_phrases: [], sequence: "B", plan: true, planned: 0 },
{ id: 6, difficulty: 2, performance: 20, guided_phrases: [], sequence: "A", plan: false, planned: 0 },
{ id: 7, difficulty: 4, performance: 30, guided_phrases: [], sequence: "A", plan: true, planned: 0 },
{ id: 8, difficulty: 4, performance: 40, guided_phrases: [], sequence: "B", plan: false, planned: 0 },
{ id: 9, difficulty: 4, performance: 20, guided_phrases: [], sequence: "B", plan: false, planned: 0 },
];
var current_slide; // assigned at each slide start
let lastViewedSlide;
let lastSlide = slides.length; // last slide of the course
let courseEnded = false;
// Test Assignments
current_slide = 1;
// Global Variable of progress()
let queue = [];
// At each end of slide we just initiate the progress function..
function progress(e){
// Check if we are in intro or outro
if(e){
switch(e){
// Intro slides with negative numbers incrementing.. slide 0 is the first slide..
case -1:
goToSlide(-1);
break;
case -2:
goToSlide(-2);
break;
case -3:
goToSlide(-3);
break;
// Outro slides with positive number beyond 100..
case 101:
goToSlide(101);
break;
case 102:
goToSlide(102);
break;
case 103:
goToSlide(103);
break;
// last intro slide executes progress like this: progress(1);
case 1:
// Go to first slide and generate queue
const firstSequence = slides[0].sequence;
let iterate = 0;
while(slides[iterate].sequence == firstSequence){
iterate++
queue.push(iterate);
}
goToSlide(1);
break;
};
return;
// return the whole progress function if we are in intro or outros..
}
// Check if we have reached last course slide
if(current_slide == lastSlide){
courseEnded = true; // it'll remain true
};
if(courseEnded === true){
progressCourseEnded();
return;
};
// initiate progress here
queue.shift(); // Remove this slide from queue
if(queue.length !== 0){
goToSlide(queue[0]); // if the queue is NOT empty go to the first element of queue
} else {
// If the queue is empty fill it..
fillQueue();
// Then view the queue slide by slide
goToSlide(queue[0]);
}
// fillQueue function to generate queue again
function fillQueue(){
let nextSequence = slides[current_slide].sequence;
let iterate = current_slide;
let planedSlides = [];
let newSlides = [];
// Fill planedSlides array
for(let a = 1; a < current_slide; a++){
if(slides[a - 1].sequence == nextSequence && slides[a - 1].plan == true){
console.log('a: ' + a)
planedSlides.push(a);
}
}
// Fill newSlides array
while(slides[iterate].sequence == nextSequence){
iterate++
newSlides.push(iterate)
}
// Finally fill queue
queue = planedSlides.concat(newSlides);
};
}
// goToSlide function test
function goToSlide(slide){
console.log(slide);
current_slide = slide;
//let player = GetPlayer();
//player.SetVar("goToSlide",slide);
};
// Tests
setTimeout(() => progress(1), 2000); // at slide intro
setTimeout(() => progress(), 4000); // executed at end of slide 1
setTimeout(() => progress(), 6000); // executed at end of slide 2
setTimeout(() => progress(), 8000); // executed at end of slide 3
setTimeout(() => progress(), 10000); // executed at end of slide 4
setTimeout(() => progress(), 12000); // executed at end of slide 5
setTimeout(() => progress(), 14000); // executed at end of slide 2
setTimeout(() => progress(), 16000); // executed at end of slide 6
setTimeout(() => progress(), 18000); // executed at end of slide 7 .. This throws the error
最佳答案
我认为,在下面的 while 循环中进行迭代会超出范围,因为迭代从幻灯片数组索引 1 开始:
// Fill newSlides array
while(slides[iterate].sequence == nextSequence){
iterate++;
newSlides.push(iterate);
}
我会在 while 语句之前和内部有一个 console.log 语句。
修改while循环
while(iterate < slides.length && slides[iterate].sequence == nextSequence){
关于javascript - 为什么我收到 Uncaught TypeError : Cannot read property 'sequence' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59884763/
我正在使用 React Native 构建移动应用程序。我面临 Nativ Base Toast 问题。当我第一次加载应用程序然后导航到工单状态时,如果我返回带有 android 后退按钮的主页,则会
我正在尝试创建一个“完美的滚动条”,它是这样的:。Https://github.com/noraesae/perfect-scrollbar-bower。使用尽可能简单的代码:。我犯了以下错误:。当然
我正在尝试在简单的 Draftjs 编辑器上应用自定义装饰器: import React from 'react'; import {Editor, EditorState, RichUtils} f
读取以钟形字符作为分隔符的CSV文件时,出现类型错误。我不想使用熊猫,我需要使用CSV库来解决这个问题。。示例标题:。数据类型。样本数据:。示例代码。我明白这个错误-。铃声字符参考-https://w
我正在处理 useSelector的 react-redux在我的 React Native 应用程序中,我收到以下错误: TypeError: TypeError: (0, _reactRedux.
当我用 Node 运行以下代码时: var command = "/home/myScript.sh"; fs.exists(command, function(exists){ if(exi
我正在为我的一个组件编写测试用例,该组件具有路由器(使用 withrouter)。我收到错误 wrapper.find is not a function。基本要求是需要检查我的渲染中是否存在标签,还
我一直在研究一个简单的表单提交。首先,我想在提交表单之前创建一个模式警报。于是,我使用了bootstrap的modal函数,反复得到 TypeError: $(...).modal is not a
这个问题在这里已经有了答案: Flask-Login raises TypeError: 'bool' object is not callable when trying to override
这是我在leetcode中遇到的问题。您将看到两个非空链接表,表示两个非负整数。数字以相反的顺序存储,并且它们的每个节点都包含一个数字。将这两个数字相加,然后以链表的形式返回总和。。你可以假设这两个数
我正在尝试学习Python,并试图将GitHub问题变成一种可读的形式。根据关于如何将JSON转换为CSV的建议,我得出了以下结论:。其中“Issues.json”是包含GitHub问题的JSON文件
我在使用 Proxy 类时遇到了这个有趣的错误: TypeError: 'set' on proxy: trap returned truish for property 'users' which
在研究Jupyter笔记本电脑时,我遇到了这个问题:。这是代码开始的地方:。下面的代码是在jupyter笔记本的另一个单元上运行的。我怎么才能解决它呢?。尝试更改参数和一系列其他内容,但所有这些都弹出
Working on jupyter notebooks, I came across this problem:在研究Jupyter笔记本电脑时,我遇到了这个问题: TypeError:un
我对此很陌生(对于 Jasmine 测试、ExtJs 和 JS 来说确实很陌生),我必须修复这个错误/错误。我正在运行一些单元测试,但不断收到以下错误: TypeError: object is no
在下面的文档中,我们可以不使用JupyterDash在笔记本中运行应用程序,而只需运行app.run(jupyter_mode=“外部”)。。Https://dash.plotly.com/dash-
导入地理位置时: import { Geolocation } from '@ionic-native/geolocation/ngx'; 获取错误: ionic Geolocation :Ionic
我定义了以下函数: def eigval(matrix): a = matrix[0, 0] b = matrix[0, 1] c = matrix[1, 0] d =
刚刚获得了SDXL模型的访问权限,希望为即将发布的版本进行测试...不幸的是,我们当前用于我们服务的代码似乎不能与稳定ai/稳定-扩散-xl-base-0.9一起工作,我不完全确定SDXL有什么不同,
这是我的全部代码。我试图通过/insta/:id在我的page.ejs页面上查找,但它显示错误:。无法读取未定义的属性(正在读取‘UserName’)。。我希望获得uuidv4()将提供的id,但它返
我是一名优秀的程序员,十分优秀!