- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在动态创建一个像这样的对象数组:
let span = document.createElement('span')
span.classList.add('animated')
span.classList.add('char')
span.textContent = (char.match(/'|\.|\!|\?| |\,|\.|\;|\:|\./)) ? char : '\ '
chars.push({
char: char,
span: span,
solved: span.textContent === '\ ' ? false : true
})
稍后,当我尝试迭代数组并访问元素时,如下所示:
chars[i].span.classList.add('high-light')
我收到以下错误:
Unable to get property 'span' of undefined or null reference
为什么?
完整代码可在此处获取:https://github.com/sickdyd/secret-sentence
最佳答案
问题出在这里:
for (let i = 0; i < chars.length; i++) {
// ...
setTimeout(function() {
chars[i].span.classList.add('high-light')
这是 IE11 中的一个错误。使用 let
语法声明的变量在 ES2015 中正式引入,而 IE11 则在 2013 年发布——虽然遇到 let
时不会抛出语法错误,但它不符合规范。具体来说,在 IE11 中使用 let
声明的变量不会获得 block 作用域 - 相反,它们具有函数作用域,就像 var
一样,所以到最后在循环中,i
等于 chars.length
,并且 chars[chars.length]
为 undefined
,因此尝试引用 chars[i].span
将引发错误。
我建议避免使用 for
循环并使用 forEach
来代替,这将解决问题并让您避免跟踪索引:
chars.forEach(function(char) {
// ...
setTimeout(function() {
char.span.classList.add('high-light')
// ...
// instead of referencing chars[i], reference char
您还可以使用主closure inside loops例如,虽然它很丑陋:
for (let i = 0; i < chars.length; i++) {
(function(i) {
// now, there will be a separate `i` argument for every iteration
// ...
setTimeout(function() {
chars[i].span.classList.add('high-light')
// ...
})(i);
}
您还可以考虑自动将代码转译为与 Babel 兼容的 ES5 .
关于javascript - 带有对象数组的 IE11 探针(适用于 Firefox 和 Chrome),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57766250/
这是东西吗? 我有一些遗留服务,这些服务永远不会在Kubernetes中运行,通过定义服务并手动上载终结点对象,这些服务目前对群集可用。 但是,服务是水平分片的,我们经常需要重新启动其中一个端点。我的
我是 Kubenetes 新手,想澄清以下问题。 假设我们有一个在 k8s 中运行的容器化 java 程序(使用 docker)。当 JVM 消耗的堆大小达到限制时,我需要停止向 pod 发送请求。为
我正在使用 Varnish 在两台服务器之间进行负载平衡,并且我已经设置了一个 Controller 和两个后端,它们正在成功地完成此操作。 我的问题是我的两个后端正在 my.domain.com 的
我有一个不是网络服务的微服务。 它是一个 Spring Boot (1.5) CommandLineRunner 应用程序,不需要公开 API 或对 http 执行任何操作。 但是,我需要对 Kube
有 runocc.d dtrace 脚本可以打印每个处理器的运行队列。我需要在 Mac OS X 上的 C++ 程序中获取运行队列长度。是否有可能以某种方式将 dtrace 构造嵌入到 C++ 程序中
我们在 Tomcat 5.5.17 上部署的网络应用程序在 Sun VM 1.5.0_06-b05 上运行时遇到了一些速度变慢的问题,并且我们的托管公司没有提供足够的数据来发现问题。 我们正在考虑安装
我的想法是将 liveness probe 实现为命令,并使用类似的东西 $ grep something ERROR 从 pod 内部,因此如果在 pod 的输出中存在包含 ERROR 的行,则 l
如何使用 Spring JPA 的 Query by Example不仅查询实体本身,还使用 findAll() 查询相关实体的属性?当在探针/示例实体上设置相关实体属性时,我们所有的尝试似乎
这个问题已经有答案了: Internet Explorer 11 JavaScript Let Statement (1 个回答) 已关闭 3 年前。 我正在动态创建一个像这样的对象数组: let s
所以我正在关注这个 link将 BPF 程序附加到用户空间探测器,Dtrace 格式(请参阅用户静态定义的跟踪点部分)。 C 程序: #include int main() { DTRACE
我有一个只使用来自 Rabbit MQ 的消息的项目,我正在使用 网络核心 2.1。 .我只是创建了一个带有托管服务的“控制台应用程序”,一切正常。 现在我需要将它部署到 Openshift 并配置
我正在编写一个 grpc 服务并在 Kubernetes (https://github.com/grpc-ecosystem/grpc-health-probe) 上使用 gRPC 健康检查。在我的
import time import datetime import argparse import netaddr import sys import logging from scapy.all
我是一名优秀的程序员,十分优秀!