如何解决js延迟显示效果问题?
发布网友
发布时间:2022-04-23 04:06
我来回答
共7个回答
热心网友
时间:2022-04-22 16:44
方法/步骤
首先我们打开Sublime Text软件,新建一个HTML的文档,如下图所示
接下来在html中添加JS方法,在JS方法里面设置一个for循环,输出每次循环的值,如下图所示
然后我们运行程序,你会看到在输出栏中输出了10次10,而并没有从1开始输出,如下图所示
接下来我们更改一下for循环中的逻辑,利用闭包将i的值传递给a,如下图所示
这次在运行程序我们就可以看到输出内容是1开始输出了,如下图所示
另外,在JS中刚才的写法还可以按照下面的方式实现,如下图所示
7
综上所述,在JS中如果for循环中有异步方法,就需要用闭包的方式保留当前循环变量值,是不是很简单啊
追问不懂,跟我问的问题有什么关系吗
热心网友
时间:2022-04-22 18:02
修改了问题吗?太鸡贼了。
不知道你引用了什么框架,按我理解$+function这个函数根本没有执行,另外,你的分号好像用错了。
将函数单独拿出来执行。
// 改为英文分号
var aaa=document.getElementById("a");
var bbb=document.getElementById("b");
// 别加$,并在末尾添加()
(function()
{
if (bbb.value==2)
{
aaa.value="成功"
}
else
{
aaa.value= "失败"
}
})();
以下是原回答:
-----------------------------
不是延迟显示,而是语法错误,代码中变量aaa只是个值,所以你的代码只会改变aaa变量本身,并不会更改#a元素的value,正确代码如下:
<input id="a">
<input id="b" value="2">
<script>
(() =>
{
// #b.value应该是个字符串,js中允许数字字符串和数字直接比较
if (document.getElementById("b").value == 2)
{
document.getElementById("a").value = '成功';
}
else
{
document.getElementById("a").value = '失败';
}
})();
</script>
追问我是用asp写的,的值通过授予,然后js通过判断的值向传值判断是“成功”还是“失败”,清除浏览器缓存后,第一次打开是无值的,刷新一下才显示“成功”
追答建议你在我原回答的代码基础上修改,避免一些低级错误。
热心网友
时间:2022-04-22 19:37
<%bb=2%>
<input id="a">
<input id="b" value=<%=bb%>>
<script>
$(function(){
if ($("#b").val()=="2"){
$("#a").val("成功");
}else{
$("#a").val("失败");
}
});
</script>
热心网友
时间:2022-04-22 21:28
直接这么写试试
<%bb=2%>
<input id="a">
<input id="b" value=<%=bb%>>
<script>
var aaa=document.getElementById("a");
var bbb=document.getElementById("b");
if (bbb.value==2){
aaa.value="成功";
}else{
aaa.value="失败";
}
</script>
不要写成函数
热心网友
时间:2022-04-22 23:36
<%bb=2%> 这个赋值比 if (bbb.value==2){ aaa.value="成功" } 这个判断慢,所以第一次刷新没有显示,第二次刷新的时候,那个input a 里有缓存的值,所以第二次刷新才会显示成功
热心网友
时间:2022-04-23 02:01
既然改了问题,那就来改改回答,如果是现在这样的代码出了问题,建议你在浏览器打开页面后按F12调出控制台console,看下有没有报错。
热心网友
时间:2022-04-23 04:42
通过setTimeout函数调用。如下:
setTimeout( function(){
//add your code
}, 5 * 1000 );//延迟5000毫米
setTimeout() 的第一个参数是含有 JavaScript 语句的字符串。这个语句可能诸如 "alert('5 seconds!')",或者对函数的调用,诸如 alertMsg()"。
第二个参数指示从当前起多少毫秒后执行第一个参数。

扩展资料
延迟运行,setTimeout函数用法的具体事例:
<script language="javascript">
function test(obj)
{
alert(obj);
setTimeout("test()",1000);
}
</script>
<input id="testButton" type="button" onclick="test(this)">
setTimeout里的test()没带参数,第一次显示[object],1000毫秒之后显示undefined,变量尚未赋值,也就是说用此方式可以实现带参数的方法循环,但是参数被销毁。
其实这很简单就可以实现,不必写那么长的代码来实现。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>