2016-10-27 20 views
3

私はJavaScriptを使ってプログラミングするのが初めてです。 <input type="text">要素valueから取得した文字列値を繰り返し、兄弟の<input>要素から取得した番号で文字列を繰り返し、次にを使用して、結果の繰り返し文字列に<div>要素の.innerHTMLを設定しますか?私は期待された結果を返さなかった以下のアプローチを試みました。私の現在の試みで何が間違っていますか?予想される結果を達成するための簡単な方法はありますか? ループ内の単語を繰り返す

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 { 
 
\t background-color: #D3D3D3; 
 
\t font-family: arial; 
 
\t text-align: right; 
 
\t color: #008B8B; 
 
} 
 

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

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

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

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

 
.formfield { 
 

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

 
#button { 
 
\t border-radius: 20px; 
 

 
} 
 

 
#results { 
 
\t font-size: 1em; 
 
} 
 

 
</style> 
 

 
</head> 
 
<body> 
 

 
<div id="contentwrap"> 
 

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

 
\t \t </form> 
 
\t 
 
\t \t <div id="results"></div> 
 
\t </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 { 
 
\t background-color: #D3D3D3; 
 
\t font-family: arial; 
 
\t text-align: right; 
 
\t color: #008B8B; 
 
} 
 

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

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

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

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

 
.formfield { 
 

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

 
#button { 
 
\t border-radius: 20px; 
 

 
} 
 

 
#results { 
 
\t font-size: 1em; 
 
} 
 

 
</style> 
 

 
</head> 
 
<body> 
 

 
<div id="contentwrap"> 
 

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

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

+0

のStackOverflowへようこそ!さらなる質問をする前にhttp://stackoverflow.com/help/how-to-askを読んでください。ありがとう、楽しい時間があります! – connexo

答えて

1

関数結果が期待repeatWord戻ります。

問題は、関数にパラメータを渡さないことです。関数の戻り値はそれ以上処理されません。 DOMの要素は、repeatWordファンクションコール内で参照されません。返される値がrepeatWordの要素は、.textContentまたは.innerHTMLに設定されていません。

注:console.log()を使用すると、関数呼び出し内の値または関数の戻り値をチェックできます。たとえば、console.log(result)です。 What is the scope of variables in JavaScript?も参照してください。

正の数は、要素の値を期待されると思われるようあなたは、input type="number" for入力タイプ=「テキスト」as #repeatnum element, with分最大attribute set to 10 '、または他の正の数値を置き換えることができます。

repeatWord関数呼び出し内id S wordrepeatnumresultsが参照する要素を有する要素を参照するための変数を定義します。

#word#repeatnumから取得します。 str#word.valueと設定し、num#repeatnum.valueAsNumberとし、Numberコンストラクタに渡します。

ループの完了時に、#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>

+0

このような「質問」は本当に答えるべきではありません。 – connexo

+0

@connexo質問に答えてはならない理由は何ですか? – guest271314

+0

これには実際の質問はありません。質問は、何が求められるのかを知るためにコードを分析する必要はありません。 – connexo