目次:
ベースとなるHTMLファイルです。
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>会員管理</title>
</head>
<body>
<h1>会員管理</h1>
<p>会員情報を入力してください。</p>
<form>
<p>氏名:<input type="text" size="20"></p>
<p>年齢:<input type="text" size="5"></p>
<p>メール:<input type="text" size="30"></p>
<input type="button" value="登録" onclick="registForm()"/>
<input type="button" value="ランダム登録" onclick="registRandom()"/>
</form>
<script type="text/javascript" src="js/my.js"></script> </body>
</html>
document.write("<p>JavaScriptで出力したよ</p>");
var kaiin = [
["山田太郎",55,"taro@aaa.jp"],
["佐藤花子",18,"hanako@bbb.jp"],
["中村次郎",42,"jiro@ccc.jp"],
];
// 会員を登録する
function regist() {
for (var i = 0; i < kaiin.length; i++) {
alert((i+1)+"番目の会員は"+
kaiin[i][0]+"("+kaiin[i][1]+"歳)で、メールは"+
kaiin[i][2]+"です");
}
}
var kaiin = [
{name: "山田太郎", age: 55, mail: "taro@aaa.jp"},
{name: "佐藤花子", age: 18, mail: "hanako@bbb.jp"},
{name: "中村次郎", age: 42, mail: "jiro@ccc.jp"},
];
// 会員を登録する
function regist() {
for (var i = 0; i < kaiin.length; i++) {
alert((i + 1) + "番目の会員は" + kaiin[i].name +
"(" + kaiin[i].age + ")でメールは" +
kaiin[i].mail + "です");
}
}
JavaScriptでのクラスは関数オブジェクトです。
var Member = function (n, a, m) {
this.name = n;
this.age = a;
this.mail = m;
this.getString = function () {
return this.name + "(" + this.age + "歳) - mail:" + this.mail;
}
};
var taro = new Member("山田太郎", 55, "taro@aaa.jp");
var hanako = new Member("佐藤花子", 18, "hanako@bbb.jp");
var jiro = new Member("中村次郎", 42, "jiro@ccc.jp");
// 会員を登録する
function regist() {
alert("会員は" + taro.getString() + "です");
alert("会員は" + hanako.getString() + "です");
alert("会員は" + jiro.getString() + "です");
}
var Member = function (n, a, m) {
this.name = n;
this.age = a;
this.mail = m;
this.getString = function () {
return this.name + "(" + this.age + "歳) - mail:" + this.mail;
}
};
var taro = new Member("山田太郎", 55, "taro@aaa.jp");
var hanako = new Member("佐藤花子", 18, "hanako@bbb.jp");
var jiro = new Member("中村次郎", 42, "jiro@ccc.jp");
var mem_list = [];
// 会員を登録する
function regist() {
var name = document.getElementById("name").value;
var age = document.getElementById("age").value;
var mail = document.getElementById("mail").value;
var n = mem_list.length;
mem_list[n] = m;
var list = document.getElementById("list");
var li = document.createElement("li");
li.innerHTML = mem_list[n].getString();
list.appendChild(li);
}
var Member = function (n, a, m) {
this.name = n;
this.age = a;
this.mail = m;
this.getString = function () {
return this.name + "(" + this.age + "歳) - mail:" + this.mail;
}
};
var taro = new Member("山田太郎", 55, "taro@aaa.jp");
var hanako = new Member("佐藤花子", 18, "hanako@bbb.jp");
var jiro = new Member("中村次郎", 42, "jiro@ccc.jp");
var mem_list = [];
// 会員を登録する
// m:会員
function regist(m) {
var n = mem_list.length;
mem_list[n] = m;
var list = document.getElementById("list");
var li = document.createElement("li");
li.innerHTML = mem_list[n].getString();
list.appendChild(li);
}
// フォーム情報から会員を登録する
function registForm() {
var name = document.getElementById("name").value;
var age = document.getElementById("age").value;
var mail = document.getElementById("mail").value;
regist(new Member(name,age,mail));
}
// ランダムに会員を登録する
function registRandom() {
var name=getRandomString(true)+" "+getRandomString(true);
var age=getRandomInt(15,70);
var mail=getRandomString(false)+"@"+getRandomString(false)+".jp";
regist(new Member(name,age,mail));
}
// ランダムな整数
function getRandomInt(s1, s2) {
return parseInt(Math.random() * (s2 - s1 + 1)) + s1;
}
// ランダムな文字列
function getRandomString(cap) {
var s = "";
if (cap)
s += String.fromCharCode(getRandomInt(0x41, 0x41 + 25));
var r = getRandomInt(5, 10);
for (var i = 0; i < r; i++)
s += String.fromCharCode(getRandomInt(0x61, 0x61 + 25));
return s;
}
var Member = function (n, a, m) {
this.name = n;
this.age = a;
this.mail = m;
this.getString = function () {
return this.name + "(" + this.age + "歳) - mail:" + this.mail;
}
this.li; // ←ここを追加
};
var taro = new Member("山田太郎", 55, "taro@aaa.jp");
var hanako = new Member("佐藤花子", 18, "hanako@bbb.jp");
var jiro = new Member("中村次郎", 42, "jiro@ccc.jp");
var mem_list = [];
// 読み込み時
function loaded() {
regist(taro);
regist(hanako);
regist(jiro);
}
// 会員を登録する
// m:会員
function regist(m) {
var n = mem_list.length;
mem_list[n] = m;
var list = document.getElementById("list");
var li = document.createElement("li");
li.innerHTML = m.getString() + " - <input type='button' value='削除' onclick='removeMember(" + n + ")'/>";
list.appendChild(li);
m.li = li;
}
// フォームから会員を登録する
function registForm() {
var name = document.getElementById("name").value;
var age = document.getElementById("age").value;
var mail = document.getElementById("mail").value;
if (name != "" && age != "" && mail != "") {
regist(new Member(name, age, mail));
}
else {
alert("全部入力してください!");
}
}
// ランダムに会員を登録する
function registRandom() {
var name = getRandomString(true) + " " + getRandomString(true);
var age = getRandomInt(15, 70);
var mail = getRandomString(false) + "@" + getRandomString(false) + ".jp";
regist(new Member(name, age, mail));
}
// ランダムな整数
function getRandomInt(s1, s2) {
return parseInt(Math.random() * (s2 - s1 + 1)) + s1;
}
// ランダムな文字列
function getRandomString(cap) {
var s = "";
if (cap)
s += String.fromCharCode(getRandomInt(0x41, 0x41 + 25));
var r = getRandomInt(5, 10);
for (var i = 0; i < r; i++)
s += String.fromCharCode(getRandomInt(0x61, 0x61 + 25));
return s;
}
// 会員を削除する
function removeMember(id) {
var list = document.getElementById("list");
list.removeChild(mem_list[id].li);
mem_list[id] = undefined;
}
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>会員管理</title>
<link type="text/css" rel="stylesheet" href="css/my.css">
<script type="text/javascript" src="js/my.js"></script>
</head>
<body onload="loaded()">
<h1>会員管理</h1>
<p>会員情報を入力してください。</p>
<form>
<p>氏名:<input id="name" type="text" size="20"></p>
<p>年齢:<input id="age" type="text" size="5"></p>
<p>メール:<input id="mail" type="text" size="30"></p>
<input type="button" value="登録" onclick="registForm()"/>
<input type="button" value="ランダム登録" onclick="registRandom()"/>
<input type="button" value="修正" onclick="modifyMember()"/>
</form>
<h2>会員リスト</h2>
<ul id="list">
</ul>
</body>
</html>
var Member = function (n, a, m) {
this.name = n;
this.age = a;
this.mail = m;
this.getString = function () {
return this.name + "(" + this.age + "歳) - mail:" + this.mail;
};
this.li;
this.id;
};
var taro = new Member("山田太郎", 55, "taro@aaa.jp");
var hanako = new Member("佐藤花子", 18, "hanako@bbb.jp");
var jiro = new Member("中村次郎", 42, "jiro@ccc.jp");
var mem_list = [];
var selected_member=null;
// 読み込み時
function loaded() {
regist(taro);
regist(hanako);
regist(jiro);
}
// 会員を登録する
// m:会員
function regist(m) {
var n = mem_list.length;
mem_list[n] = m;
var list = document.getElementById("list");
var li = document.createElement("li");
li.addEventListener("click",selectMember);
li.innerHTML = m.getString() + " - <input type='button' value='削除' onclick='removeMember(" + n + ")'/>";
list.appendChild(li);
m.li = li;
m.id=n;
li.member=m;
}
// フォームから会員を登録する
function registForm() {
var name = document.getElementById("name").value;
var age = document.getElementById("age").value;
var mail = document.getElementById("mail").value;
if (name != "" && age != "" && mail != "") {
regist(new Member(name, age, mail));
}
else {
alert("全部入力してください!");
}
}
// ランダムに会員を登録する
function registRandom() {
var name = getRandomString(true) + " " + getRandomString(true);
var age = getRandomInt(15, 70);
var mail = getRandomString(false) + "@" + getRandomString(false) + ".jp";
regist(new Member(name, age, mail));
}
// ランダムな整数
function getRandomInt(s1, s2) {
return parseInt(Math.random() * (s2 - s1 + 1)) + s1;
}
// ランダムな文字列
function getRandomString(cap) {
var s = "";
if (cap)
s += String.fromCharCode(getRandomInt(0x41, 0x41 + 25));
var r = getRandomInt(5, 10);
for (var i = 0; i < r; i++)
s += String.fromCharCode(getRandomInt(0x61, 0x61 + 25));
return s;
}
// 会員を削除する
function removeMember(id) {
var list = document.getElementById("list");
list.removeChild(mem_list[id].li);
mem_list[id] = undefined;
}
// 会員を選択する
function selectMember(e){
var mem=e.target.member;
document.getElementById("name").value=mem.name;
document.getElementById("age").value=mem.age;
document.getElementById("mail").value=mem.mail;
selected_member=mem;
}
// 会員を修正する
function modifyMember(){
if(selected_member==null) return;
var name=document.getElementById("name").value;
var age=document.getElementById("age").value;
var mail=document.getElementById("mail").value;
if (name != "" && age != "" && mail != "") {
selected_member.name=name;
selected_member.age=age;
selected_member.mail=mail;
selected_member.li.innerHTML=selected_member.getString() + " - <input type='button' value='削除' onclick='removeMember(" + selected_member.id + ")'/>";
}
else {
alert("全部入力してください!");
}
}
h1{
color:#ff0000;
}
li:hover{
color:#0000ff;
}
「ランダム登録」というボタンを押すと、名前、年齢、メールを適当に作って登録されるようにしなさい。
ただし、
としなさい。