Skip to content
Twitter
edu-IT Practical Labo
【名古屋】
edu-IT Practical Laboedu-IT Practical Labo
  • Home
  • Blog
  • Services
    • Programming Typing
    • Basic WEB-TECH Lesson
    • IT-SKILL Training
  • Contact
 
  • Home
  • Blog
  • Services
    • Programming Typing
    • Basic WEB-TECH Lesson
    • IT-SKILL Training
  • Contact

JavaScriptで「成績管理サンプル(レコード追加・削除処理の実装)」を作ってみよう

You are here:
  1. Home
  2. edu-IT
  3. JavaS…
4月262020
edu-ITJavaScriptWeb Coding

Contents

  • 1 準備段階
  • 2 JavaScript:「行追加」の実装
  • 3 JavaScript:「行削除」の実装
  • 4 画面設計書の読み込み

準備段階

今回はJavaScriptを使って、下の「成績管理サンプル」を作成していきたいと思います。

 


 

画面設計書を参考にサンプルを制作していきますが、その前に準備段階として

・JavaScriptでの「行追加」/「行削除」の実装
・ 画面設計書の読み込み

を確認していきましょう。

下記の配布資料に設計書ファイルが格納されていますので、必要に応じてダウンロードしてください。
【配布資料】JavaScriptで「成績管理サンプル(レコード追加・削除処理の実装)」を作ってみよう
 

 

JavaScript:「行追加」の実装

 今回はJavaScriptを使って、DOMツリーに(新規の)ノードを追加する方法で行追加を実装します。(他の方法もありますが、ここでは下のメソッドを使用します)

例:ユーザが「行の追加」ボタンをクリックするごとに、テーブルに行を追加
practice1_1.html

下記のソースを理解することでDOM追加メソッドの使用法をおさえましょう。

<html>
<head>
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>DOMを使用したノードの追加</title>
<script language="JavaScript" type="text/javascript">

function addRow(){
	
// tbodyエレメントのノードを取得する
var tbody = document.getElementById("firstTr").parentNode;	
// trの作成
var tr = document.createElement("tr");
	
// 最初のtdを作成
var td1 = document.createElement("td");
var txt1 = document.createTextNode("DOM");
td1.appendChild(txt1);

// 2つめのtdを作成
var td2 = document.createElement("td");
var txt2 = document.createTextNode("ドキュメントオブジェクトモデル");
td2.appendChild(txt2);
		
// ノードを追加する
tr.appendChild(td1);
tr.appendChild(td2);
tbody.appendChild(tr);	
}
</script>
</head>
<body bgcolor="#ffffff" id="body">
<h1>テーブルに行を追加する</h1>

<form name="myForm">
<p><input type="button" value="行の追加" onclick="addRow()"></p>
</form>
<table id="myTable" border="1">
<tr id="firstTr">
<td>JavaScript</td><td>スクリプト言語</td>
</tr>
<tr>
<td>CSS</td>
<td>スタイルシート</td>
</tr>
</table>
</body>
</html>

 

JavaScript:「行削除」の実装

 
 今回はJavaScriptを使って、DOMツリーでノードを削除する方法で行削除を実装します。(他の方法もありますが、ここでは下のメソッドを使用します)

例:ユーザが「行の削除」ボタンをクリックするごとに、テーブルの行が削除
practice1_2.html

下記のソースを理解することでDOM削除メソッドの使用法をおさえましょう。


<html>
<head>
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>DOMを使用したノードの削除</title>
<script language="JavaScript" type="text/javascript">

function deleteRow(){
	var tbody = document.getElementById("firstTr").parentNode;
	var numOfRow = tbody.childNodes.length;
	
	if(numOfRow > 0){
		tbody.removeChild(tbody.childNodes[numOfRow -1]);
	}
}
</script>
</head>
<body bgcolor="#ffffff" id="body">
<h1>テーブルの行の削除</h1>

<form name="myForm">
<p><input type="button" value="行の削除" onclick="deleteRow()"></p>
</form>
<table id="myTable" border="1">
<tr id=firstTr">
	<td>JavaScript</td>
	<td>スクリプト言語</td>
</tr>
<tr>
	<td>DOM</td>
	<td>ドキュメントオブジェクトモデル</td>
</tr>
</table>
</body>
</html>

 

画面設計書の読み込み

 
添付資料の「画面設計書(JS成績管理サンプル).xlsx」を確認してください。

添付資料の「画面設計書(JS成績管理サンプル).xlsx」を見て、サンプルを実装してください。
 Seiseki_Sample.html

<html>
<head>
<script language="JavaScript" type="text/javascript">

function addRow(){
// フォームのテキストの内容を取得する
var inName = document.FORM.input_name.value;
var inGroup = document.FORM.input_group.value;
var inScore = document.FORM.input_score.value;

	// エラーメッセージの初期化(非表示)
	document.getElementById("nameError").style.display ="none";
	document.getElementById("nameGroup").style.display ="none";
	document.getElementById("nameScore").style.display ="none";
	
var errorFlg = false;
	//入力チェックを実施
	if(inName == ""){
		document.getElementById("nameError").style.display ="block";
		errorFlg = true;
	}
	if(inGroup == ""){
		document.getElementById("nameGroup").style.display ="block";
		errorFlg = true;
	}
	if(inScore == ""){
		document.getElementById("nameScore").style.display ="block";
		errorFlg = true;
	}
	if(errorFlg){
		return;
	}

// tbodyエレメントのノードを取得する
var tbody = document.getElementById("firstTr").parentNode;
// trの作成
var tr = document.createElement("tr");

var numfOfRow = tbody.childNodes.length - 1;

// 1つめ~4つ目のtdを作成
// 【処理を記載】

// 5つめのtdを作成
var td5 = document.createElement("td");
td5.setAttribute("align", "center");
var input5 = document.createElement("input");
input5.setAttribute("type","button"); 
input5.setAttribute("value","X");
input5.setAttribute("onClick","colDel(this)");
td5.appendChild(input5);

// ノードを追加する
// 【処理を記載】

}

function colDel(obj){
	//削除ボタンを押下された行を取得
	// trのインデックスを取得して行を削除する
    //【処理を記載】
}
</script>
</head>
<title>成績管理サンプル</title>
<body>

<h2>成績表</h2>
<form name="FORM">
<table>
<tr >
	<th >名前</th>
	<td><input type="text" id="input_name" name="input_name" value=""></td>
</tr>
<tr>
	<th >グループ名</th>
	<td><input type="text" id="input_group" name="input_group" value=""></td>
</tr>
<tr>
	<th >点数</th>
	<td><input type="text" id="input_score" name="input_score" value=""></td>
</tr>
</table>
</form>
<br><hr><br>

<input type="button" id="btn_row_add" value="行追加" onClick="addRow()">
<br><br>
<!-- メッセージ出力エリア -->
<span id="nameError" style="color:#ff0000; display:none;">「名前」が未入力です。入力してから行追加をしてください。</span>
<span id="nameGroup" style="color:#ff0000; display:none;">「グループ名」が未入力です。入力してから行追加してください。</span>
<span id="nameScore" style="color:#ff0000; display:none;">「点数」が未入力です。入力してから行追加してください。</span>
<br><br>
<table>
<tr id="firstTr">
	<th width="10px">&nbsp;No&nbsp;</th>
	<th width="100px">名前</th>
	<th width="100px">グループ名</th>
	<th width="60px">点数</th>
	<th width="60px">削除</th>
</tr>
</table>
</body>
</html>

 
#edu-IT #名古屋

Category: edu-IT, JavaScript, Web CodingBy semi3del2020年4月26日Leave a comment
Share this post
Share with Google+Share with FacebookShare with Twitter

Author: semi3del

Post navigation

PreviousPrevious post:VisualStudioCode入門~例題を解きながら基本操作を覚えようNextNext post:初めてのExcel~基本操作の確認とよく使う関数(判定する/照合する)を覚えよう

Related Posts

CodeSandboxでReactのTodoリストを作成してみよう
2025年3月31日
CodeSandboxでReactのフォーム部品を操作してみよう
2024年11月19日
GitHub Actions入門~Cloud9でGitHub ActionsのHelloWorldを実行してみよう
2023年11月28日
Web APIをPythonで使ってみる~Fast APIの基礎
2023年9月25日
FigmaからReactのコード生成するプラグインを使ってUIコンポーネントを作成してみよう
2023年7月4日
CodeSandboxでReactのUIコンポーネントを作成してみよう
2023年5月10日

コメントを残す コメントをキャンセル

Your email address will not be published. Required fields are marked *

Post comment

最近の投稿
  • CodeSandboxでReactのTodoリストを作成してみよう
  • Pythonライブラリ「Scrapy」でスクレイピング~Webサイトからデータを取得してみよう
  • CodeSandboxでReactのフォーム部品を操作してみよう
  • はじめてのLambda~関数のサンプルを作ってみよう
  • Canva入門~テンプレートでプレゼン資料を作成してみよう
アーカイブ
  • 2025年3月
  • 2025年1月
  • 2024年11月
  • 2024年9月
  • 2024年8月
  • 2024年6月
  • 2024年4月
  • 2024年1月
  • 2023年11月
  • 2023年9月
  • 2023年7月
  • 2023年5月
  • 2023年3月
  • 2023年1月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年6月
  • 2022年5月
  • 2022年3月
  • 2022年1月
  • 2021年11月
  • 2021年9月
  • 2021年7月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年1月
  • 2020年11月
  • 2020年9月
  • 2020年6月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2017年7月