javascript - 在循环中重复单词

标签 javascript css

我是使用 JavaScript 编程的新手.如何重复从 <input type="text"> 中检索到的字符串值元素 value , 按从兄弟 <input> 中检索到的数字重复字符串元素,然后设置 .innerHTML<div>使用 JavaScript 将元素添加到生成的重复字符串中?我尝试了以下方法,但未返回预期结果。我目前的尝试做错了什么?有没有更简单的方法来达到预期的效果?

 function repeatWord(str, num) {
        num = Number(num);

        var result = '';
        while (true) {
            if (num & 1) { // (1)
                result += str;
            }
            num >>>= 1; // (2)
            if (num <= 0) break;
            str += str;
        }

        return result;
    }

</script>
<html>
<head>
<title></title>

 

<style type="text/css">

body {
	background-color: #D3D3D3;
	font-family: arial;
	text-align: right;
	color: #008B8B;
}

#contentwrap {
	border: 8px #800000 solid;
	padding: 20px;
	width: 600px;
	border-radius: 25px;
	text-align: right;
	background: white;
	margin: 40px auto 0px auto;	
}
#formwrap {

	text-align: center;
	margin: 0px 0px 60px 0px;
	min-height: 300px;
}

#title {
	font-size: 2.2em;
	border-bottom: 7px #008B8B double;
	padding: 10px 0px 10px 0px;
	color: #008B8B;
	text-align: center;
}

#formtext {
	text-align: center;
	margin-top: 5px;
}

.formfield {

	text-align: center;
	margin: 5px 20px 10px 20px;
}

#button {
	border-radius: 20px;

}

#results {
	font-size: 1em;
}

</style>

</head>
<body>

<div id="contentwrap">

	<div id="title">Fun with Loops</div> <br />
	
	<div id="formwrap">
		<form>
	
			<div id="formtext">Enter any word</div>
			<input type="text" id="word" class="formfield" size="20" /> <br />
			
			<div id="formtext">Enter number of times to repeat word</div>
			<input type="text" id="repeatnum" class="formfield" size="20" /> <br />
	
			<input type="button" value="Show Output" id="button" onClick="repeatWord()" />

		</form>
	
		<div id="results"></div>
	</div>
</div>
</body>
</html>
<html>
<head>
<title></title>

<script type="text/javascript">

 function repeatWord(str, num) {
        num = Number(num);

        var result = '';
        while (true) {
            if (num & 1) { // (1)
                result += str;
            }
            num >>>= 1; // (2)
            if (num <= 0) break;
            str += str;
        }

        return result;
    }

</script>

<style type="text/css">

body {
	background-color: #D3D3D3;
	font-family: arial;
	text-align: right;
	color: #008B8B;
}

#contentwrap {
	border: 8px #800000 solid;
	padding: 20px;
	width: 600px;
	border-radius: 25px;
	text-align: right;
	background: white;
	margin: 40px auto 0px auto;	
}
#formwrap {

	text-align: center;
	margin: 0px 0px 60px 0px;
	min-height: 300px;
}

#title {
	font-size: 2.2em;
	border-bottom: 7px #008B8B double;
	padding: 10px 0px 10px 0px;
	color: #008B8B;
	text-align: center;
}

#formtext {
	text-align: center;
	margin-top: 5px;
}

.formfield {

	text-align: center;
	margin: 5px 20px 10px 20px;
}

#button {
	border-radius: 20px;

}

#results {
	font-size: 1em;
}

</style>

</head>
<body>

<div id="contentwrap">

	<div id="title">Fun with Loops</div> <br />
	
	<div id="formwrap">
		<form>
	
			<div id="formtext">Enter any word</div>
			<input type="text" id="word" class="formfield" size="20" /> <br />
			
			<div id="formtext">Enter number of times to repeat word</div>
			<input type="text" id="repeatnum" class="formfield" size="20" /> <br />
	
			<input type="button" value="Show Output" id="button" onClick="repeatWord()" />

		</form>
	
		<div id="results"></div>
	</div>
</div>
</body>
</html>

最佳答案

repeatWord 函数返回预期结果。

问题是您没有将任何参数传递给函数,函数的返回值没有被进一步处理。 DOM 元素未在 repeatWord 函数调用中引用。没有元素使用 repeatWord 的返回值设置 .textContent.innerHTML

请注意,您可以使用 console.log() 检查函数调用中的值或函数的返回值。例如,console.log(result)。另见 What is the scope of variables in JavaScript? .

您可以将 input type="number"替换为 input type="text" 作为 #repeatnum 元素,使用 min属性设置为0max属性设置为10`,或其他正数值,因为正数似乎是元素的预期值。

定义变量以引用具有 idwordrepeatnumresults 的元素以引用 repeatWord 函数调用。

#word#repeatnum元素获取.value;设置str#word .value,设置num#repeatnum .valueAsNumber 传递给 Number 构造函数。

while 循环完成时,将 #results .textContent 设置为 result

<div id="contentwrap">

  <div id="title">Fun with Loops</div>
  <br />

  <div id="formwrap">
    <form>

      <div id="formtext">Enter any word</div>
      <input type="text" id="word" class="formfield" size="20" />
      <br />

      <div id="formtext">Enter number of times to repeat word</div>
      <input type="number" min="0" max="10" id="repeatnum" class="formfield" size="20" />
      <br />

      <input type="button" value="Show Output" id="button" onClick="repeatWord()" />

    </form>
    <br>
    <div id="results"></div>
  </div>
</div>
<script>
  var word = document.getElementById("word"); 
  var number = document.getElementById("repeatnum");
  var results = document.getElementById("results");

  function repeatWord() {
    // set `num` to `number` `.valueAsNumber`
    num = number.valueAsNumber;  
    str = word.value; // set `str` to `word` `.value`
    var result = "";
    while (true) {
      if (num & 1) { // (1)
        result += str;
      }
      num >>>= 1; // (2)
      if (num <= 0) break;
      str += str;
    }
    // set `results` `.textContent` to `result`
    results.textContent = result; 
  }
</script>

关于javascript - 在循环中重复单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40295818/

相关文章:

javascript - 如果输入类型=数字,则 maxlength=5 不起作用

javascript - 带有 rowspan 和 colspan 的表中的颜色 TD

javascript - 单击 DIV 内的 IFRAME 时删除 DIV 元素

html - 在 img 上居中 div

javascript - 将选项值转换为链接 - Javascript

Javascript event.target 在 ReactJs 组件中未按预期输出

javascript - 将 phpFox 的功能导入 SocialEngine

javascript - 为什么使用 data() 将函数存储在元素上?

html - 在 BeautifulSoup 中提取至少一个类的 div

css - 旋转圆 CSS