JS运行后在DOM中加载的图像
Images loading in the DOM after JS runs
我遇到了一个非常奇怪的问题。我有一个简单的猜谜游戏,问四个问题。它接受带有警报的用户输入,打印到DOM,无论用户猜测是否正确,然后显示一个图像(绿色复选框或红色x),然后转到下一个问题。等等,等等。
问题:游戏运行,将消息打印到DOM,但直到整个游戏结束才显示图像。
奇怪的是,chrome控制台清楚地显示img元素的"src"属性正在被正确地修改(并且文件树被正确地排列以访问图像)。相反,会出现一个空白框。当然,直到比赛结束。
我的HTML外观示例:
<p id="question1" class="rightAnswer" class="wrongAnswer"></p>
<img id="img1" src="" width="100">
JS函数(IIFE)。每个问题都有一个功能,它们看起来都和这个相同:
var question1 = (function() {
var userAnswer1 = prompt(arrayQuestions[0]);
if((userAnswer1.toUpperCase() === "BOSTON") || (userAnswer1.toUpperCase() === "BOS")) {
// inserts correct or incorrect message after user guesses
document.getElementById('question1').innerHTML= arrayAnswerCorrect[0];
// changes color of that message
document.getElementById('question1').style.color = "green";
// inserts image via 'src' attribute
document.getElementById('img1').src = "images/correct.png";
scoreIt++;
} else {
document.getElementById('question1').innerHTML = arrayAnswerIncorrect[0];
document.getElementById('question1').style.color = "red";
document.getElementById('img1').src = "images/incorrect.png";
};
}());
提前谢谢。这真是难住我了。
问题和DOM更新在单个代码块中,该代码块开始,一次提出一个问题,最后在最后一个问题之后完成执行。
但是javascript线程一直运行到完成:一旦启动,在代码返回之前,没有任何东西会中断它们。提示只是阻塞javascript线程,直到用户输入信息。尽管浏览器在执行线程期间接受对DOM的修改,并且可能在DOM元素属性中反映对DOM的更改,但它们通常会推迟重新呈现页面,直到脚本完成。
您需要重新思考如何按顺序提问,但在开始下一个问题之前,请先运行每个问题的代码以完成。两种可能性显而易见:1)"下一个问题"按钮,2)考虑使用setTimeout
调用来调用下一个提问代码。祝你好运;-)
相关文章:
- 如何在谷歌字体加载时显示加载图像
- 预加载图像并插入DOM
- 加载图像时加载图标
- 在页面启动期间加载图像
- 预加载图像image.onload脚本MVC
- 可以't在我的React组件中加载图像
- 加载图像后调整HTML画布的大小
- HTML/JS github页面项目没有't在使用firefox运行时加载图像或声音
- 错误:$injector:modulerr加载图像时模块处于角度
- 谷歌地图加载后隐藏加载图像
- 在照片查看器(Javascript和jQuery)中异步加载图像时可能出现错误
- 正在从字节数组加载图像内容
- 网页上已有tinymce加载图像列表
- 单击提交按钮后加载图像将冻结
- 如何使用Express'正确加载图像;s的静态中间件
- 使用jquery即时加载图像
- Html5画布使用JCanvasScript加载图像
- Javascript使用JCanvaScript在画布中加载图像
- 使用jquery/ajax显示加载图像
- ajax缓存false无法加载图像