Javascript没有遵循一步一步的指令
Javascript not following step by step instruction
这是我的HTML
$(function(){
$(".button1").on("click",function(){
$(".img").css("display","block");
$(".bord").append('<div class="test1">11111111</div>');
$(".img").css("display","none");
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div class="parent">
<div class="button1">button1</div>
<div class="button2">button2</div>
</div>
<div class="bord">
<img src="http://www.mtlexs.com/images/reload.gif" class="img" style="display: none;">
</div>
这里我写的代码,当button1点击显示图像,然后显示文本,然后隐藏图像。但是这里的图像没有显示
然后我改变代码,让显示图像和显示文本,它是工作的
$(function(){
$(".button1").on("click",function(){
$(".img").css("display","block");
$(".bord").append('<div class="test1">11111111</div>');
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div class="parent">
<div class="button1">button1</div>
<div class="button2">button2</div>
</div>
<div class="bord">
<img src="http://www.mtlexs.com/images/reload.gif" class="img" style="display: none;">
</div>
那么第一个代码中的问题是什么?
我需要show image->show text-->hide image
为了显示.img
,浏览器需要经过回流和重新绘制过程,只有当callstack为空(您的代码未运行)时才有可能。这意味着当您输入以下内容时:
$(".img").css("display","block");
.img
还没有呈现在屏幕上,因为调用堆栈仍然很忙,所以浏览器什么也不做,等待你的代码完成执行。然后写入代码
$(".img").css("display","none");
返回到之前的状态。当代码完成执行时,根本不会发生回流或重新绘制过程。你在屏幕上看不到你的按钮
您正在快速更新display
的值。如果你添加一个超时,你会看到图像实际上显示然后隐藏。
更改不直接呈现(参见@Maximus的回答)
添加一个超时,它将按照你想要的工作
$(function() {
$(".button1").on("click", function() {
$(".img").css("display", "block");
$(".bord").append('<div class="test1">11111111</div>');
setTimeout(
function() {
$(".img").css("display", "none");
}, 2000);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div class="parent">
<div class="button1">button1</div>
<div class="button2">button2</div>
</div>
<div class="bord">
<img src="http://www.mtlexs.com/images/reload.gif" class="img" style="display: none;">
</div>
相关文章:
- 对父作用域的指令更新延迟了一步
- Parsley.js,多步骤表单,在移动到上一步时跳过验证
- 有没有一种方法可以在所有嵌套循环之后放置一个标签,以便在一步中将它们全部打断
- 如何禁用在Bootstrap中不完成一步就转到下一步
- 如何使用Jquery一步一步地获取PHP数据
- jQuery Slider 滑得太远了一步
- 将“下一步”和“上一个”按钮添加到较大的图像
- 引导表单向导 - 防止在提交 ajax 响应的每个页面表单出现错误时滚动到下一步
- 如何创建一个“下一步”按钮,使用 Java 脚本和 Twitter Bootstrap 切换选项卡
- 如何在单击下一步时使文本移动/更改
- 您如何控制在填写表单时单击下一步时 iOS/Android 将关注哪个字段
- JQuery SlideToggle()在放松的每一步都执行函数
- 对变更作出反应->setState落后一步
- AngularJS中的上一步
- Jquery UI选项卡-根据输入字段值,使用“下一步”/“上一步”按钮推进选项卡
- 我有一系列的处方受试者(a->B->C->a),但最后一步不起作用
- Jquery选项卡单击时高亮显示'下一步'按钮
- 如何解析用户对象以返回屏幕名称并继续下一步操作
- 如何点击谷歌饼图进入下一步行动
- Javascript没有遵循一步一步的指令