JavaScript初心者です。繰り返し処理についての問題が分からないのでご教授ください。
問題
ユーザがポップアップウィンドウから1から始まる整数値を入力します。プログラムを動かす度に入力される値は異なります。
動作は次のようなものを想定しています。
【1】プログラムを実行すると、次のようなポップアップウィンドウを表示する。なお、入力欄の初期値は空白とする。
【2】ユーザが、整数を入力して、OKボタンを押す。
【3】処理開始後、まずユーザが入力した数値をWebブラウザに出力する。
【4】次に、ユーザが入力した数値の数だけデータが保持できるよう配列を準備する。その配列の要素の中に星という文字を入力する。代入終了後、配列の中身を 【変更前の配列】として、Webブラウザに出力する。
【5】続いて、配列のインデックス番号に応じて、配列に代入する内容を変える。代入する内容は次のとおりとする。
・配列のインデックス番号が奇数ならば★マークを代入する。
・配列のインデックス番号が偶数ならば☆マークを代入する。
なお、ある数値について、数値を2で割った余りが0の時は偶数、余りが1の時は奇数と判定できる。
偶数→2n 奇数→2n+1
【6】配列の要素の中身の変更が終わったら、配列の中身を【変更後の配列】として、Webブラウザに出力する。
出力例
入力された数字:10
【変更前の配列】
星星星星星星星星星星
【変更後の配列】
★☆★☆★☆★☆★☆
【7】もし、ユーザがキャンセルボタンもしくは閉じるボタンを押した場合は、処理がキャンセルされましたとWebページに出力する。
【1】~ 【3】までは分かるのですが、 【4】からどうすればいいのか全く分かりません。
for文、for in文を使う方法で教えて頂きたいです。
よろしくお願いします
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちは
多分、課題かなにかと思いますが、出題者にはそれまでに教えた内容に照らして期待する正解があるものと想像します。
例えば「Webブラウザに出力する」のには、document.writeのような方法を想定しているかも知れませんが、この回答も前の方の回答もそれぞれ違う方法になっています。
また、javascriptの配列はindexの範囲を事前に定義しておかなくても(他の言語と違って)自由に拡張できてしまいますので、「データが保持できるよう配列を準備する」必要は必ずしもありません。(配列として定義しておく必要はあります)
さらに、配列のindexのスタートは0からなので、indexが奇数なら★、偶数なら☆にする場合は、ご質問文の出力例とは異なり「☆★☆★☆★☆★・・・」の順になるはずと思われます。
以下は、期待される回答とはかなり違うものと想像しますが、なにかのご参考までに。
<!DOCTYPE HTML>
<html lang="ja">
<head><title>Sample</title></head>
<body>
<script>
(function(){
// ブラウザ出力用関数
function output(pre, txt, cr){
var p = document.createElement("p");
var html = pre + (cr?"<br /" + ">":"") + (txt?txt:"");
p.innerHTML = html;
document.body.appendChild(p);
}
// 使用する文字列群
var message = "自然数を入力";
var cancel = "処理がキャンセルされました";
var input = "入力された数字: ";
var bad = "自然数ではありません";
var before = "【変更前の配列】";
var after = "【変更後の配列】";
var mark0 = "星", mark1 = "★", mark2 = "☆";
// 【1】、【2】の処理
var n = window.prompt(message,"");
// 【7】の処理
if (n===null){
output(cancel);
return;
}
// 入力値が自然数かのチェック(ご質問にはないけれど)
var m = parseInt(n);
if(isNaN(m) || n!=m || m<1 ){
output(bad);
return;
}
// 【3】の処理
output(input, m);
// 【4】の処理
var i, star = [];
for(i=0; i<m; i++) star[i] = mark0;
output(before, star.join(""), 1);
// 【5】の処理
for(i=0; i<m; i++) star[i] = i%2==0?mark2:mark1;
// 【6】の処理
output(after, star.join(""), 1);
})();
</script>
</body>
</html>
No.1
- 回答日時:
たとえばこう
<script>
function myFunc(){
var ta=document.getElementById("ta");
var num=parseInt(document.getElementById("num").value);
ta.value="";
ta.value+="入力された数字:"+num+"\n";
var arr=new Array(num);
for(var i=0;i<arr.length;i++){
arr[i]="星";
}
ta.value+="【変更前の配列】\n";
ta.value+=arr.join("")+"\n";
for(var i=0;i<arr.length;i++){
arr[i]=(i%2==0)?"★":"☆";
}
ta.value+="【変更後の配列】\n";
ta.value+=arr.join("")+"\n";
}
</script>
<input type="text" name="num" id="num">
<input type="button" value="ok" onclick="myFunc()">
<br>
<textarea id="ta" rows=10></textarea>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
同じIDで定義した要素の配列を...
-
jspからjavascriptの変数引継ぎ
-
配列について、その要素を並べ...
-
javascript 変数名の連結をしたい
-
JavaScriptからPHPに配列を渡す...
-
Javascriptでの半角記号→全角記...
-
この配列は何?
-
JavaScriptにおける[] とか :...
-
ActiveXobjectが作成できない
-
関数でy=g(x)のgとは何の略です...
-
functionから別のfunctionを実...
-
idを使わずにonclickで自身の要...
-
Boolean型配列中のTrueの有無を...
-
GASでundefinedエラーが出ます
-
JavaScript でのリアルタイム時...
-
「オブジェクトが必要です。」...
-
jQueryの :not() .not() が有効...
-
【正規表現】【javascript】CR...
-
翌月を取得するGASが分かりません
-
JavaScript/jQuery で元画像フ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
同じIDで定義した要素の配列を...
-
jspからjavascriptの変数引継ぎ
-
C#テキストボックスの文字を配...
-
二次元配列を使って順位をだす...
-
undefinedを表示させない方法は...
-
javascriptで行を抽出したいです。
-
javascript 変数名の連結をしたい
-
JSONデータを50音順でソートしたい
-
配列を作って総当たりで距離を...
-
JavaScriptにおける[] とか :...
-
ソートで
-
[Javascript]多次元配列の宣言...
-
JavaScriptで簡単なクイズを作...
-
多次元配列から最大値を1行また...
-
句点“。”で区切り、“。”も含め...
-
大分類・中分類・小分類のvalue...
-
配列からNULL以外のキーを取得...
-
どうすればresponseText結果を...
-
javascriptで2つのArrayの...
-
1から20までの整数から、重複な...
おすすめ情報