今回はJavaScriptを使って、下の「並び替え判定サンプル」を作成していきたいと思います。

Contents
今回必要となる知識の整理
その前に準備段階として、下に挙げた知識を確認しておきましょう。
・JavaScript の基礎 ~ そもそもどうやって書くんだっけ?~
・文字をクリックした順番でテキストエリアに並べるには?
・字をクリックした順番でテキストエリアに移動するには?
⇒ 【演習】:「簡単な並び替え判定サンプル」を作ってみよう!!!
【配布資料】JavaScriptで「簡単な並び替えサンプル」を作ってみよう
文字をクリックした順番でテキストエリアに並べるには?
practice1.html

・どうやって考える?
文字列を配列に置き換えて、その要素であるそれぞれの単語を選択形式に変換し、クリックした順でテキストフィールドにコピーして作成します。
<html>
<head>
<title>文字をクリックした順番でテキストフィールドに並べる</title>
<script language="JavaScript">
function selectform(){
number = new Array("私","の", "エンジニア","職業", "です","。", "は");
for(i=0; i<number.length; i++){
document.formname.selectname.options[i].text = number[i];
}
}
function moveword(){
k = document.formname.selectname.selectedIndex;
document.formname.text1.value += document.formname.selectname.options[k].text;
}
<script></head>
<body onLoad="selectform()">
<form name="formname">
選択文字列:<input type="text" name="text1" size="40">
<br><br>
<select name="selectname" size="10" onChange="moveword()">
<option><option><option><option><option><option><option>
</select>
</form>
</body>
</html>
字をクリックした順番でテキストエリアに移動するには?
practice2.html

practice1.html を参考にコードを考えてください。
<html>
<head>
<title>文字をクリックした順番でテキストフィールドに並べる</title>
<script language="JavaScript">
function selectform(){
// ここに処理を記載
}
function moveword(){
// ここに処理を記載
}
</script>
<body onLoad="selectform()">
<form name="formname">
選択文字列:<input type="text" name="text1" size="40">
<br><br>
<select name="selectname" size="10" onChange="moveword()">
<option><option><option><option><option><option><option>
</select>
</form>
</body>
</html>
では、下記の4つの関数を使って、「簡単な並び替えサンプル」を作っていきましょう。
・selectform() 関数 … 与えられた文字要素の配列を選択可能な形にして提示
・moveword() 関数 … クリックされた選択エリアの文字要素を「回答」欄に移動
・check () 関数 … 「回答」欄に表示されている文字列が問題の正解と一致するかどうか判定
・resetOption() 関数 …回答をクリアにして選択エリアの項目を再設定
<html>
<head>
<title>簡単な並び替え判定サンプル</title>
<script language="JavaScript">
function selectform(){
var number = new Array("エンジニア","。","私","は","です");
for(k=0; k<number.length; k++){
// ここに処理を記載
}
}
function moveword(){
// ここに処理を記載
}
function check(){
answer = "私はエンジニアです。";
choice = document.formname.text3.value;
if(answer == choice){
alert("正解です");
} else{
alert("やり直してください");
selectform();
document.formname.text3.value = "";
}
}
function resetOption(){
// 処理を記載
}
</script>
</head>
<body onLoad="selectform()">
<form name="formname">
<h3>簡単な並び替え判定サンプル</h3>
要求:<input type="text" name="text1" size="50" value="次の単語を並べ替え英文の和訳を完成しなさい">
問題:<input type="text" name="text2" size="50" value="I am an engineer.">
回答:<input type="text" name="text3" size="50">;
選択語:<input type="button" value="判定" onClick="check()">
<input type="button" value="リセット" onClick="resetOption()">
<select name="selectname" size="10" onChange="moveword()">
<option></option>
<option></option>
<option></option>
<option></option>
<option></option>
<option></option>
</select>
</form>
</body>
</html>
以上となります。
時間が余った方は、JavaScriptでの配列の並び替えの問題について考えてみてください。
JavaScriptの「配列並び替え」問題(sort_example.html)

上のように、「並び替え」ボタンを押下後に、
① 文字列を反転させて並び替えて表示
② 文字列を辞書順にして並び替えて表示 後に「sort_example1.html」を完成させてください。
*【自由課題】:③文字列をランダムに並べ替えて表示
>> sort_example.html
<html>
<head>
<title>文字列の要素の順番を並び替えるには</title>
<script language="JavaScript">
var preArray = new Array("い","ろ","は","に","ほ","へ","と");
function sortArray(){
// ここに処理を記載(配列を反転させて文字列を表示)
//document.FORM.txt1.value =
// ここに処理を記載(配列を辞書順に並び替えて文字列を表示)
//document.FORM.txt1.value =
}
</script>
</head>
<body>
<form name="FORM">
元の文字列:<h3>い、ろ、は、に、ほ、へ、と</h3>
<input type="button" value="並び替え" onClick="sortArray();">
<br><br>
並び替え後:<br>
<input type="text" name="txt1">
</form>
<br><br>
</body>
</html>
#edu-IT #名古屋





