Javascript 如何让for循环在打印之前运行?

Javascript 如何让for循环在打印之前运行?,javascript,html,loops,Javascript,Html,Loops,我在html中设置了这个选项,允许用户输入一个数字,然后单击submit,我希望更改输出框中的句点数量。目前,只打印一个句点(我知道这是在调用条件部分声明的变量)。我假设这意味着它正在循环运行之前收集值,但我不知道如何解决这个问题。请帮忙。(如果需要的话,我很乐意提供其余的代码,但我相当肯定我已经解决了这个问题 <script type="text/javascript"> function makepyramid() { var

我在html中设置了这个选项,允许用户输入一个数字,然后单击submit,我希望更改输出框中的句点数量。目前,只打印一个句点(我知道这是在调用条件部分声明的变量)。我假设这意味着它正在循环运行之前收集值,但我不知道如何解决这个问题。请帮忙。(如果需要的话,我很乐意提供其余的代码,但我相当肯定我已经解决了这个问题

    <script type="text/javascript">
    function makepyramid() {
        var numberin = document.getElementById("numberin");
        var pyramid = numberin.value;
        var mathablenumber = +numberin.replace;
        for (n = 0, spaces ="."; n < mathablenumber; n++)
            {
            var spaces = spaces +=".";
        }
        var txtOutput = document.getElementById("txtOutput");
        txtOutput.value = "Hi there, " + spaces + "!"
    } // end makepyramid
</script>

函数makepyramid(){
var numberin=document.getElementById(“numberin”);
var金字塔=numberin.value;
var mathablenumber=+numberin.replace;
对于(n=0,空格=“.”n
嗯,我可能不完全明白你的意思, 无论如何,如果你想让你的代码等待for循环,你可以简单地让它异步,试试这个

async function processArray(array) {
  array.forEach(item => {
    // define synchronous anonymous function
    // IT WILL THROW ERROR!
    await func(item);
  })
}
此外,当你在循环中一遍又一遍地初始化空格时,你输入了一个错误。这根本无法完成你的工作。
在循环外部定义
var空间。

基本上,您的问题在行
var mathablenumber=+numberin.replace;
。我不知道它做什么以及为什么需要它。如果您的输入字段是数字类型,它已经返回数字类型值,您可以直接使用它进行迭代

我对您的代码进行了一些编辑:

函数makepyramid(){ var numberin=document.getElementById(“numberin”); var金字塔=numberin.value; //你也可以留下一行 //对于(var n=0,spaces='.';n

我不确定您在这里的目标。我想展示一些技巧:

让doc、htm、bod、nav、M、I、mobile、S、Q、aC、rC、tC、CharPyramid;//用于其他负载
addEventListener('load',()=>{
doc=document;htm=doc.documentElement;bod=doc.body;nav=navigator;M=tag=>doc.createElement(tag);I=id=>doc.getElementById(id);
mobile=nav.userAgent.match(/Mobi/i)?真:假;
S=(选择器,在范围内)=>{
var w=在| | doc内;
返回w.querySelector(选择器);
}
Q=(选择器,内部)=>{
var w=在| | doc内;
返回w.querySelectorAll(选择器);
}
aC=函数(){
常数a=[…参数];
a、 shift().classList.add(…a);
返回aC;
}
rC=函数(){
常数a=[…参数];
a、 shift().classList.remove(…a);
返回rC;
}
tC=函数(){
常数a=[…参数];
a、 shift().classList.toggle(…a);
返回tC;
}
CharPyramid=函数(char='*'){
this.char=char;
this.build=高度=>{
设p=M('div');
对于(设i=1,r,c=this.char,l=height+1;idiv>div>div{
显示:内联块;
}
金字塔高度:

此行的含义是什么?
var mathablenumber=+numberin.replace;
textOutput.value='Hi here',+'。重复(numberher)+“!”
在这种情况下比循环更有意义。另外,您是否在比此函数更高的范围内定义了任何变量“n”?例如全局?因为您创建循环的方式没有在其中声明“n”,所以它必须已定义elsewhere@AksJacoves将html字符串编号转换为javascript记录的内容gnizes作为一个数字,它可以对其进行数学运算。我需要调用用户输入的原始数字,以用于我尚未完成的代码的后续部分。不,它不会。
+numberin.input
将字符串转换为数字。
+numberin.replace
不会,因为
numberin.replace
不是字符串。异步函数不会o修复OP的问题。@BrianMcCutchon谢谢你,编辑。我认为OP代码中发生的事情是,
+numberin.replace
返回NaN,这使得
n
返回false,所以循环永远不会运行。@BrianMcCutchon是的,尽管出于这个目的,这行根本不需要,所以我把它删掉了。我尝试了这个b但是现在我在页面上没有得到任何输出,在那里我至少得到了“hello,!”我得到了它来做我想做的事!我确实想在空格=空格+=”中留下。我使用了你的代码,但巧妙地留下了那部分。非常感谢!有人投票给这个人!(我的代表太低了)天哪@stackslave。我是一个新手,很多事情我都想不起来,但我正在尽我最大的努力去解决它,这给我留下了深刻的印象。我的最终目标是(如果输入是3)看起来像u###############################应该是一个空格,但当它不是单空格时就不那么漂亮了我意识到shift+enter在这个文本框中不起作用###__###