我得到了一个带有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
进行进一步处理。
答案 0 :(得分:2)
如何确保在console.log之前完成循环?
因为要使用for循环(这是一个同步循环)进行循环。
for (var i = 0, max = 1000000; i < max; i++) {
}
console.log('Finished');
上面,finish将在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);
FYI(顺便说一句),您应该查看javascript中的hoisting,在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);
答案 1 :(得分:1)
在循环外部定义el
变量。
var els = document.getElementsByTagName("a");
var el;
for(var i = 0; i < els.length; i++) {
if(els[i].nodeValue == 'Something') {
el = els[i];
break;
}
}
console.log(el);