JavaScript中的延迟While循环

JavaScript中的延迟While循环,javascript,html,Javascript,Html,我正在使用以下代码检查锚标记的href属性,如果为空,我现在想显示警报。但是,当我在web浏览器控制台中编写javaScript代码时,我的整个系统在相当长的一段时间内没有响应。我可能做错了什么。有人能给我解释一下吗 <html> <body> <a href="" id = "content2">Click Here</a> <body> </html> var a=document.getElementById(“co

我正在使用以下代码检查锚标记的href属性,如果为空,我现在想显示警报。但是,当我在web浏览器控制台中编写javaScript代码时,我的整个系统在相当长的一段时间内没有响应。我可能做错了什么。有人能给我解释一下吗

<html>
<body>
<a href="" id = "content2">Click Here</a>
<body>
</html>
var a=document.getElementById(“content2”).getAttribute(“href”);
设i=0;
而(a.修剪().长度<1)
{
任务(一);
}
职能任务(i){
setTimeout(函数(){
警报(一);
}, 1000 * 10); 
} 

您需要将
while
循环更改为
如果
条件,则
while
循环从未结束

var a=document.getElementById(“content2”).getAttribute(“href”);
设i=0;
如果(a.修剪().长度<1)
{
任务(一);
}
职能任务(i){
setTimeout(函数(){
警报(一);
}, 1000 * 10); 
}

您需要将
while
循环更改为
如果
条件,则
while
循环从未结束

var a=document.getElementById(“content2”).getAttribute(“href”);
设i=0;
如果(a.修剪().长度<1)
{
任务(一);
}
职能任务(i){
setTimeout(函数(){
警报(一);
}, 1000 * 10); 
}

您的超时调用似乎在一个while循环内,该循环被调用了很多次。应该是

var a=document.getElementById(“content2”).getAttribute(“href”);
设i=0;
如果(a.修剪().长度<1){
任务(一);
}
职能任务(一){
setTimeout(函数(){
警报(一);
如果(a.修剪().长度<1){
任务(++i);
}
}, 1000 * 10);
}

您的超时调用似乎在一个while循环内,该循环被调用了很多次。应该是

var a=document.getElementById(“content2”).getAttribute(“href”);
设i=0;
如果(a.修剪().长度<1){
任务(一);
}
职能任务(一){
setTimeout(函数(){
警报(一);
如果(a.修剪().长度<1){
任务(++i);
}
}, 1000 * 10);
}


但如果替换while,则只执行一次代码。我希望每秒钟执行一次代码,而不仅仅是一次,但您需要更改while循环的条件吗?是否要循环,直到whatBut替换if代替while只执行一次代码。我希望每秒钟执行一次代码,而不仅仅是一次,但您需要更改while循环的条件吗?是否要循环,直到通过a href?跟踪更改背后的想法是什么?使用while是否,因为它阻止了代码执行(是一个同步函数)。为什么通过a href?跟踪更改背后的想法是否,使用while是否,因为它阻止了代码执行(是一个同步函数)。
var a = document.getElementById("content2").getAttribute("href");

let i = 0;
while(a.trim().length < 1)
{
     task(i);
}

function task(i) { 
  setTimeout(function() { 
      alert(i); 
  }, 1000 * 10); 
}