我得到一个带有 Javascript 的元素,
var els = document.getElementsByTagName("a");
for(var i = 0; i < els.length; i++) {
if(els[i].nodeValue == 'Something') {
var el = els[i];
break;
}
}
console.log(el);
我如何确定循环之前已经完成console.log
?
请注意,我不能放入console.log
循环内。这只是一个简单的例子,我需要el
进一步处理。
我如何确定循环在 console.log 之前已经完成?
因为您正在使用 for 循环进行循环,这是一个同步循环。
for (var i = 0, max = 1000000; i < max; i++) {
}
console.log('Finished');
上面,finished 将始终在 for 循环完成最后一次迭代后执行。
在您的示例中,您可以确定您的日志将在循环后执行,因为我上面说过。您无法确定的是您的变量是否未定义。
var els = document.getElementsByTagName("a");
for(var i = 0; i < els.length; i++) {
// If this does not get hit, your 'el' will be undefined.
if(els[i].nodeValue == 'Something') {
var el = els[i];
break;
}
}
console.log(el);
仅供参考(顺便说一句),你应该看看javascript中的提升,你在 IF 语句中声明了你的 'el' 变量,但是没有与 var 的块范围,即你可以/应该在 els 变量下定义 el 变量,以免混淆。
例如
var els = document.getElementsByTagName("a");
var el;
for(var i = 0; i < els.length; i++) {
// If this does not get hit, your 'el' will be undefined.
if(els[i].nodeValue == 'Something') {
el = els[i];
break;
}
}
console.log(el);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句