javascript -
仅显示最后分配的值
问题描述
我有一个代码,在其中我尝试通过随机化字符(暴力破解字符串)来实现所需的字符串(“嘿!”),并在 a 中显示所有步骤<p>
(下一步覆盖前一个步骤)。然而,问题是,在 中#first
,只显示了排列的最后一步(“嘿!”)。
为什么它不一个接一个地显示所有步骤,只显示最后一个?我将不胜感激有关该问题的任何帮助。
注意:在控制台中,所有步骤都被记录下来。我也尝试<p>
用timeout
;输出字符串 没有改变。
必须是的示例: https ://i.imgur.com/fNjhjUS.gif
这是我的 Javascript 代码和 HTML:
var fline = ["H", "e", "y", "!"];
temp_fline = [" ", " ", " ", " "],
index = 0,
possible = "!abc!defghijklmnopqrstuvwxyz!ABCDEFGHIJKLMNOPQRSTUVWXYZ!";
while (index < 4)
{
if (fline[index] != temp_fline[index])
temp_fline[index] = possible[Math.round(Math.random() * 57)];
if (fline[index] == temp_fline[index])
++index;
var tempString = "";
for (var i = 0; i < 4; ++i)
tempString += temp_fline[i];
console.log(tempString);
document.getElementById("fline").innerHTML = '> ' + tempString;
}
<html>
<body>
<div id="first">
<br>
<p id="fline"></p>
<br><br><br>
<p id="sline"></p>
<br><br><br>
<p id="tline"></p>
<br><br><br>
<p id="fhline"></p>
</div>
</body>
</html>
解决方案
您在循环的每次迭代中都覆盖了 innerHTML 而不是添加到它
尝试改变
document.getElementById("fline").innerHTML = '> ' + tempString;
至
document.getElementById("fline").innerHTML += '> ' + tempString;
// ^^ concatenate instead of reassign
推荐阅读
- ios - iOS14最近通话记录不显示来电者信息
- javascript - 是否有一种将数组项转换为对象属性的速记方法?
- sql - 从 CTE 中的表中删除值
- database - 如何使用 sybase 从 SELECT 更新同一表中的列
- javascript - 如何在数组 React 组件中使用地图打印 JSON 数据
- android - Xamarin 启动画面仅支持单个图像
- c++ - 是否有任何理由更喜欢有符号或无符号整数来表示位列表?
- c++ - 在 QTabBar 中选择标签文本
- macos - 如何以编程方式获取 MacOS 中套接字对等点的 pid?
- version-control - 我们需要在新项目中使用文件的多个版本。该文件有许多分支和标签。我们如何使用 ClearCase 管理文件?