如何解决js延迟显示效果问题? 255

<%bb=2%><inputid="a"><inputid="b"value=<%=bb%>><script>varaaa=document.getElementById... <%bb=2%>
<input id="a">
<input id="b" value=<%=bb%>>
<script>
var aaa=document.getElementById("a");
var bbb=document.getElementById("b");
$(function() {
if (bbb.value==2){
aaa.value="成功"
}else{
aaa.value="失败"
}
});
</script>
为啥第一次打开是<input id="a">值不显示,刷新一下才显示值“成功”,如何解决这种延迟显示?
展开
 我来答
司马刀剑
高粉答主

2019-04-25 · 每个回答都超有意思的
知道顶级答主
回答量:4.6万
采纳率:93%
帮助的人:7545万
展开全部

方法/步骤

  • 首先我们打开Sublime Text软件,新建一个HTML的文档,如下图所示

  • 接下来在html中添加JS方法,在JS方法里面设置一个for循环,输出每次循环的值,如下图所示

  • 然后我们运行程序,你会看到在输出栏中输出了10次10,而并没有从1开始输出,如下图所示

  • 接下来我们更改一下for循环中的逻辑,利用闭包将i的值传递给a,如下图所示

  • 这次在运行程序我们就可以看到输出内容是1开始输出了,如下图所示

  • 另外,在JS中刚才的写法还可以按照下面的方式实现,如下图所示

  • 7

    综上所述,在JS中如果for循环中有异步方法,就需要用闭包的方式保留当前循环变量值,是不是很简单啊

追问
不懂,跟我问的问题有什么关系吗
gjsgdhr
2019-04-26 · TA获得超过1800个赞
知道小有建树答主
回答量:665
采纳率:77%
帮助的人:468万
展开全部

修改了问题吗?太鸡贼了。

不知道你引用了什么框架,按我理解$+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通过判断的值向传值判断是“成功”还是“失败”,清除浏览器缓存后,第一次打开是无值的,刷新一下才显示“成功”
追答
建议你在我原回答的代码基础上修改,避免一些低级错误。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
网海1书生
科技发烧友

2019-04-25 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26228

向TA提问 私信TA
展开全部
<%bb=2%>
<input id="a">
<input id="b" value=<%=bb%>>
<script>
$(function(){
    if ($("#b").val()=="2"){
        $("#a").val("成功");
    }else{
        $("#a").val("失败");
    }
});
</script>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
babyfans隆哥
2019-04-25 · TA获得超过112个赞
知道小有建树答主
回答量:205
采纳率:77%
帮助的人:66.1万
展开全部

直接这么写试试

<%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>

不要写成函数

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cs1250947732
2019-04-25 · TA获得超过489个赞
知道小有建树答主
回答量:970
采纳率:55%
帮助的人:227万
展开全部
<%bb=2%> 这个赋值比 if (bbb.value==2){ aaa.value="成功" } 这个判断慢,所以第一次刷新没有显示,第二次刷新的时候,那个input a 里有缓存的值,所以第二次刷新才会显示成功
更多追问追答
追问
那如何解决这个问题呢,如果写成if (bbb.value==){ aaa.value="成功" } 的话,这个代码就不能放在里面了
追答
你为何不用js赋值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式