Javascript for/in循环是否会在循环后退出函数?
在我看来,在for/in循环之后,我的函数结束了 My toggle()从不显示“toggle routine done!”,显然它不会运行tempstoreonChangeMartificial() 但是它在for/in循环中做一些事情 为什么?Javascript for/in循环是否会在循环后退出函数?,javascript,Javascript,在我看来,在for/in循环之后,我的函数结束了 My toggle()从不显示“toggle routine done!”,显然它不会运行tempstoreonChangeMartificial() 但是它在for/in循环中做一些事情 为什么? 您正在尝试使用中的从HTMLCollection获取元素 使用覆盖层的覆盖层 资源 您正在尝试使用中的从HTMLCollection获取元素 使用覆盖层的覆盖层 资源 我不知道您可以在文档上迭代。getElementByClas
- 您正在尝试使用中的
从
获取元素HTMLCollection
- 使用覆盖层的覆盖层
资源
- 您正在尝试使用中的
从
获取元素HTMLCollection
- 使用覆盖层的覆盖层
资源
文档上迭代。getElementByClassName
使用for in
也许这就是问题所在,您可能希望在HTMLCollection上迭代,如下所示:
function toggle() {
overlays = document.getElementsByClassName("overlay");
if (globalOpacityValue == 0.9){
globalOpacityValue = 0;
}else{
globalOpacityValue = 0.9;
}
console.log("globalOpacityValue: " + globalOpacityValue);
for (overlay of overlays) {
overlay.style.opacity = globalOpacityValue;
}
console.log("toggle routine done!");
tempStoreOnChangeArtificial();
console.log("tempStoreOnChangeArtificial done!");
}
我不知道您可以使用中的
for
迭代document.getElementByClassName
也许这就是问题所在,您可能希望迭代HTMLCollection,如下所示:
function toggle() {
overlays = document.getElementsByClassName("overlay");
if (globalOpacityValue == 0.9){
globalOpacityValue = 0;
}else{
globalOpacityValue = 0.9;
}
console.log("globalOpacityValue: " + globalOpacityValue);
for (overlay of overlays) {
overlay.style.opacity = globalOpacityValue;
}
console.log("toggle routine done!");
tempStoreOnChangeArtificial();
console.log("tempStoreOnChangeArtificial done!");
}
返回类似于数组的对象,该对象不可与
函数切换(){
var overlays=document.getElementsByClassName(“overlays”),
我
if(全局容量值==0.9){
全局容量值=0;
}否则{
全局容量值=0.9;
}
log(“globalOpacityValue:+globalOpacityValue”);
对于(i=0;i
a
B
c
返回一个类似数组的对象,该对象不能与
函数切换(){
var overlays=document.getElementsByClassName(“overlays”),
我
if(全局容量值==0.9){
全局容量值=0;
}否则{
全局容量值=0.9;
}
log(“globalOpacityValue:+globalOpacityValue”);
对于(i=0;i
a
B
c
可能您遇到了错误。请共享您的for循环可能无法正常运行的消息。在overlays[overlay].style.opacity=globalOpacityValue代码>,则有可能覆盖[overlay]
是未定义的
。然后您试图访问undefined
的style
属性,这将抛出一个错误。那么for/in循环通常不会结束一个函数?如果是这样的话,我应该运行我的其他代码。帕特里克·迈克尔森:不,for/in循环中的事情正在完成。但是是的,控制台总是说它不能访问未定义的样式。但它仍然会正常改变样式,所以我不在乎你可能会出错。请共享您的for循环可能无法正常运行的消息。在overlays[overlay].style.opacity=globalOpacityValue代码>,则有可能覆盖[overlay]
是未定义的
。然后您试图访问undefined
的style
属性,这将抛出一个错误。那么for/in循环通常不会结束一个函数?如果是这样的话,我应该运行我的其他代码。帕特里克·迈克尔森:不,for/in循环中的事情正在完成。但是是的,控制台总是说它不能访问未定义的样式。但它还是会改变风格,所以我不在乎
function toggle() {
overlays = document.getElementsByClassName("overlay");
if (globalOpacityValue == 0.9){
globalOpacityValue = 0;
}else{
globalOpacityValue = 0.9;
}
console.log("globalOpacityValue: " + globalOpacityValue);
Array.prototype.forEach.call(overlays, function(overlay) {
overlay.style.opacity = globalOpacityValue;
});
console.log("toggle routine done!");
tempStoreOnChangeArtificial();
console.log("tempStoreOnChangeArtificial done!");
}