【问题标题】:Output text to .innerHTML repeatedly using Javascript while loop使用 Javascript while 循环将文本重复输出到 .innerHTML
【发布时间】:2017-06-18 12:01:46
【问题描述】:

我正在学习如何使用 while 循环,尽管我或多或少地了解了这个概念,但我在使用 while 循环将文本重复写入 html 元素时遇到了一些麻烦。

var text = prompt("What would you like logged to screen?");
//I may need to convert prompt output to a number
var repeatText = prompt("How many times would you like to print the text?");
var loopCount = 0;

while (loopCount < repeatText) {
	//I want text to print out on screen "x" times, where x is equal to the numerical value of loopCount
  document.getElementById("outputHolder2").innerHTML += text;
  loopcount++;
}

//this isn't outputting to outputHolder1 after loop
document.getElementById("outputHolder1").innerHTML = loopCount;
#outputHolder1 {
  margin: 0px;
  padding: 10%;
  background-color: lightBlue;
  text-align: center;
  font-size: 20px;
  font-weight: 5;
}

#outputHolder2 {
  padding: 2% 10% 0% 10%;
}
<div>
  <p id="outputHolder1">
    NUMBER OF TIMES TO LOOP:
  </p>

  <p id="outputHolder2">

  </p>

</div>

据我了解,.innerHTML += text应该复制 HTML 元素的内部文本,并向其中添加新文本,但是我无法使这项工作循环进行。

请仅使用原始 Javascript 解决方案。

【问题讨论】:

  • 请注意,您需要确保输入是有效的 HTML;否则你会遇到麻烦。

标签: javascript html dom while-loop


【解决方案1】:

loopcount++; 应该像您在第一次定义 var loopCount = 0; 时那样采用 CamelCase 格式:

loopCount++;

否则它将被视为undefined变量loopcount

希望这会有所帮助。

var text = prompt("What would you like logged to screen?");
var repeatText = prompt("How many times would you like to print the text?");
var loopCount = 0;

while (loopCount < repeatText) {
  document.getElementById("outputHolder2").innerHTML += text;
  loopCount++;
}

document.getElementById("outputHolder1").innerHTML = loopCount;
#outputHolder1 {
  margin: 0px;
  padding: 10%;
  background-color: lightBlue;
  text-align: center;
  font-size: 20px;
  font-weight: 5;
}

#outputHolder2 {
  padding: 2% 10% 0% 10%;
}
<div>
  <p id="outputHolder1">
    NUMBER OF TIMES TO LOOP:
  </p>
  <p id="outputHolder2"></p>
</div>

【讨论】:

    【解决方案2】:

    当您访问它时,错误消息显示“loopcount 未定义”。你的变量是loopCount记住:JavaScript 区分大小写。

    另外,是的,您应该将用户输入从prompt 转换为数字。您可以在不执行此操作的情况下进行比较,但如果您决定稍后在代码中使用该值进行其他数学运算,这是一个很好的最佳实践。

    var text = prompt("What would you like logged to screen?");
    
    // I may need to convert prompt output to a number
    var repeatText = parseInt(prompt("How many times would you like to print the text?"), 10);
    
    var loopCount = 0;
    
    while (loopCount < repeatText) {
      // I want text to print out on screen "x" times, 
      // where x is equal to the numerical value of loopCount
      document.getElementById("outputHolder2").innerHTML += text;
      loopCount++;
    }
    
    // this isn't outputting to outputHolder1 after loop
    document.getElementById("outputHolder1").innerHTML = loopCount;
    #outputHolder1 {
      margin: 0px;
      padding: 10%;
      background-color: lightBlue;
      text-align: center;
      font-size: 20px;
      font-weight: 5;
    }
    
    #outputHolder2 {
      padding: 2% 10% 0% 10%;
    }
    <div>
      <p id="outputHolder1">
        NUMBER OF TIMES TO LOOP:
      </p>
    
      <p id="outputHolder2">
    
      </p>
    
    </div>

    【讨论】:

    • 该死的猫头鹰。我已经盯着这个看了好一个小时,甚至没有注意到一个简单的错字。另外,我通过自己的研究知道 parseInt() 函数,但是我还不太了解基数。 (虽然它似乎没有它工作。)
    • @ShawnR。提供“基数”是为了让 JavaScript 引擎知道您使用的基本数字系统。这很重要,因为如果用户的输入以“0”开头,则基本系统将被视为八进制(以 8 为底),如果字符串以“0x”开头,则将假定为十六进制(以 16 为底)。因此,通过输入10,您是在告诉 JS 引擎获取以 10 为基数的数字。
    猜你喜欢
    • 2020-09-28
    • 2015-10-27
    • 2020-10-25
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    • 2013-10-24
    相关资源
    最近更新 更多