webその?
checkbox
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>毎日のルーティンチェックリスト</title>
</head>
<body>
<h1>毎日のルーティンチェックリスト</h1>
<ul>
<li><input type="checkbox" id="task1"> 朝のストレッチ</li>
<li><input type="checkbox" id="task2"> 朝食を食べる</li>
<li><input type="checkbox" id="task3"> メールをチェックする</li>
<!-- その他のタスクを追加 -->
</ul>
<button onclick="clearChecks()">チェックをクリア</button>
<script>
// ページが読み込まれたときに、localStorageから状態を読み込む
window.onload = function() {
for (let i = 1; i <= 3; i++) {
const task = document.getElementById(`task${i}`);
const isChecked = localStorage.getItem(`task${i}`) === "true";
task.checked = isChecked;
// チェックボックスの状態が変更されたときに、localStorageに保存
task.addEventListener('change', function() {
localStorage.setItem(`task${i}`, task.checked);
});
}
}
// チェックをクリアする関数
function clearChecks() {
for (let i = 1; i <= 3; i++) {
const task = document.getElementById(`task${i}`);
task.checked = false;
localStorage.setItem(`task${i}`, false);
}
}
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>毎日のルーティンチェックリスト</title>
</head>
<body>
<h1>毎日のルーティンチェックリスト</h1>
<h2>朝のルーティン</h2>
<ul>
<li><input type="checkbox" id="morning1">aa</li>
<li><input type="checkbox" id="morning2">aa</li>
<li><input type="checkbox" id="morning3">aa</li>
<li><input type="checkbox" id="morning4">aa</li>
<li><input type="checkbox" id="morning5">aa</li>
<li><input type="checkbox" id="morning6">aa</li>
<li><input type="checkbox" id="morning7">aa</li>
<li><input type="checkbox" id="morning8">aa</li>
</ul>
<button onclick="clearChecks('morning', 8)">朝のルーティンをクリア</button>
<h2>昼のルーティン</h2>
<ul>
<li><input type="checkbox" id="noon1" >aa</li><!-- 5つのアイテムをここに追加 -->
<li><input type="checkbox" id="noon2">aa</li><!-- 5つのアイテムをここに追加 -->
<li><input type="checkbox" id="noon3">aa</li><!-- 5つのアイテムをここに追加 -->
<li><input type="checkbox" id="noon4">aa</li><!-- 5つのアイテムをここに追加 -->
<li><input type="checkbox" id="noon5">aa</li><!-- 5つのアイテムをここに追加 --><!-- ここに昼のルーチンの5つのアイテムを追加 -->
</ul>
<button onclick="clearChecks('noon', 5)">昼のルーティンをクリア</button>
<h2>夜のルーティン</h2>
<ul>
<li><input type="checkbox" id="night1">aa</li>
<li><input type="checkbox" id="night2">aa</li>
<li><input type="checkbox" id="night3">aa</li>
<li><input type="checkbox" id="night4">aa</li><!-- ここに夜のルーチンの4つのアイテムを追加 -->
</ul>
<button onclick="clearChecks('night', 4)">夜のルーティンをクリア</button>
<script>
const routines = {
morning: 8,
noon: 5,
night: 4
};
// ページが読み込まれたときに、localStorageから状態を読み込む
window.onload = function() {
for (const [prefix, count] of Object.entries(routines)) {
for (let i = 1; i <= count; i++) {
const task = document.getElementById(`${prefix}${i}`);
const isChecked = localStorage.getItem(`${prefix}${i}`) === "true";
task.checked = isChecked;
// チェックボックスの状態が変更されたときに、localStorageに保存
task.addEventListener('change', function() {
localStorage.setItem(`${prefix}${i}`, task.checked);
});
}
}
}
// チェックをクリアする関数
function clearChecks(prefix, count) {
for (let i = 1; i <= count; i++) {
const task = document.getElementById(`${prefix}${i}`);
task.checked = false;
localStorage.setItem(`${prefix}${i}`, false);
}
}
</script>
</body>
</html>
document.addEventListener("DOMContentLoaded", function() {
// ここにDOMが読み込まれた後の処理を記述
});
<p>質問1: あなたは猫が好きですか?</p>
<label><input type="checkbox" id="yesCheckbox"> はい</label>
<label><input type="checkbox" id="noCheckbox"> いいえ</label>
<label><input type="checkbox" id="bothCheckbox"> 両方</label>
<div id="yesContent" style="display: none;">
猫が好きなのですね!
</div>
<div id="noContent" style="display: none;">
猫はあまり好みではないのですね。
</div>
<div id="nextQuestion" style="display: none;">
<p>質問2: あなたは犬が好きですか?</p>
<!-- ここに次の質問に関する内容やチェックボックスを配置 -->
</div>
<script>
document.getElementById('yesCheckbox').addEventListener('change', updateContentDisplay);
document.getElementById('noCheckbox').addEventListener('change', updateContentDisplay);
document.getElementById('bothCheckbox').addEventListener('change', updateContentDisplay);
function updateContentDisplay() {
var yesContent = document.getElementById('yesContent');
var noContent = document.getElementById('noContent');
var yesChecked = document.getElementById('yesCheckbox').checked;
var noChecked = document.getElementById('noCheckbox').checked;
var bothChecked = document.getElementById('bothCheckbox').checked;
// 両方がチェックされた場合
if (bothChecked) {
yesContent.style.display = 'block';
noContent.style.display = 'block';
return;
}
// それ以外の場合
yesContent.style.display = yesChecked ? 'block' : 'none';
noContent.style.display = noChecked ? 'block' : 'none';
}
</script>
選択
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<title>Search Array</title>
<link href="marge3.css" rel="stylesheet"/>
<script src="river_japan.js"></script>
<script src="prefectureData.js"></script>
</head>
<body>
<div class="input_area">
<div>
<input checked="" id="searchByRiver" name="searchType" type="checkbox" value="river"/>
<label for="searchByRiver">河川名</label>
<input id="searchByLength" name="searchType" type="checkbox" value="length"/>
<label for="searchByLength">長さ</label>
</div>
<div>
<input id="searchInput" onkeyup="showSuggestions()" placeholder="Enter value from 2nd column" type="text"/>
<span id="matchCount"> 件マッチ</span> <!-- これが追加される部分 -->
</div>
<select id="suggestions" onchange="showMatchingRows()">
<!-- 候補がここに動的に追加されます -->
</select>
</div>
<table border="1" id="resultTable1">
<tr>
<th>通番</th>
<th>河川名</th>
<th>所属県名</th>
<th>長さ</th>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<table border="1" id="resultTable3">
<tr>
<th>通番</th>
<td></td>
</tr>
<tr>
<th>都道府県</th>
<td></td>
</tr>
<tr>
<th>県庁所在地</th>
<td></td>
</tr>
<tr>
<th>人口</th>
<td></td>
</tr>
<tr>
<th>特産品1</th>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<th>観光名所1</th>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<script>
function getCell(table, rowIndex, colIndex) {
const rows = table.getElementsByTagName('tr');
if (rows.length <= rowIndex) {
return null; // 指定された行が存在しない場合
}
const cells = rows[rowIndex].getElementsByTagName('td');
if (cells.length <= colIndex) {
return null; // 指定された列が存在しない場合
}
return cells[colIndex];
}
function showSuggestions() {
const searchValue = document.getElementById('searchInput').value;
const searchByRiver = document.getElementById('searchByRiver').checked;
let matchingRowsFromArr1 = [];
if (searchByRiver) {
matchingRowsFromArr1 = riversInJapan.filter(row => row[1].includes(searchValue));
} else {
matchingRowsFromArr1 = riversInJapan.filter(row => row[3].toString().includes(searchValue));
}
// セレクトボックスをクリア
const selectBox = document.getElementById('suggestions');
selectBox.innerHTML = "";
matchingRowsFromArr1.forEach(row => {
const option = document.createElement('option');
option.value = row[1];
option.textContent = row[1];
selectBox.appendChild(option);
});
// ここでマッチする項目の件数を表示
const matchCount = document.getElementById('matchCount');
matchCount.textContent = `${matchingRowsFromArr1.length}件マッチ`;
// 候補が1つだけの場合、自動的にその値で結果を表示
if (matchingRowsFromArr1.length === 1) {
showMatchingRows();
}
}
function showMatchingRows() {
const selectedValue = document.getElementById('suggestions').value;
const matchingRowFromArr1 = riversInJapan.find(row => row[1] === selectedValue);
const resultTable1 = document.getElementById('resultTable1');
const resultTable2 = document.getElementById('resultTable3');
if (matchingRowFromArr1) {
// arr1のデータを指定された位置に配置
getCell(resultTable1, 1, 0).textContent = matchingRowFromArr1[0];
getCell(resultTable1, 1, 1).textContent = matchingRowFromArr1[1];
getCell(resultTable1, 1, 2).textContent = matchingRowFromArr1[2];
getCell(resultTable1, 1, 3).textContent = matchingRowFromArr1[3];
const matchingRowsFromArr2 = prefectureData.filter(row => row[1] === matchingRowFromArr1[2]);
console.log(matchingRowsFromArr2);
matchingRowsFromArr2.forEach((row2, rowIndex) => {
const targetCell = getCell(resultTable2, rowIndex, 0);
console.log(targetCell);
// arr2のデータを指定された位置に配置
//getcellは、thはカウント対象にならないので番地に注意、tdで配列をつくる
getCell(resultTable3, 0, 0).textContent = row2[0];
getCell(resultTable3, 1, 0).textContent = row2[1];
getCell(resultTable3, 2, 0).textContent = row2[2];
getCell(resultTable3, 3, 0).textContent = row2[3];
getCell(resultTable3, 4, 0).textContent = row2[4];
getCell(resultTable3, 4, 1).textContent = row2[5];
getCell(resultTable3, 4, 2).textContent = row2[6];
getCell(resultTable3, 5, 0).textContent = row2[7];
getCell(resultTable3, 5, 1).textContent = row2[8];
getCell(resultTable3, 5, 2).textContent = row2[9];
});
}
}
</script>
</body>
</html>
<script>
document.addEventListener("DOMContentLoaded", function() {
let checkboxes = document.querySelectorAll('input[type="checkbox"][name="searchType"]');
checkboxes.forEach(function(checkbox) {
checkbox.addEventListener('change', function() {
if (this.checked) {
checkboxes.forEach(function(cb) {
if (cb !== checkbox) cb.checked = false;
});
}
});
});
});
</script>
css
body,
html {
height: 100%;
margin: 0;
font-family: Arial, sans-serif;
}
.input_area{
display:flex;
flex-direction:column;
margin:30px;
}
#searchInput,#suggestions{
width:200px;
}
#resultTable1{
width:400px;
border-collapse: collapse;
margin:20px;
}
#resultTable1 tr{
height:50px;
}
#resultTable2{
width:800px;
border-collapse: collapse;
margin:20px;
}
#resultTable2 tr{
height:50px;
}
#resultTable2 td{
width:80px;
}
#resultTable3{
width:500px;
border-collapse: collapse;
margin:20px;
}
#resultTable3 tr{
height:50px;
}
#resultTable3 td{
width:100px;
}
const prefectureData = [
["通番", "都道府県", "県庁所在地", "人口(2022年時点の概算)", "特産品1", "特産品2", "特産品3", "観光名所1", "観光名所2", "観光名所3"],
[1, "北海道", "札幌市", "525万", "道産子牛", "じゃがいも", "メロン", "小樽市", "旭川動物園", "大雪山"],
[2, "青森県", "青森市", "130万", "りんご", "ガーリックトースト", "ねぶた祭り", "弘前城", "八甲田山", "奥入瀬渓流"],
[3, "岩手県", "盛岡市", "125万", "わんこそば", "盛岡冷麺", "鉄砲玉", "中尊寺", "八幡平", "龍泉洞"],
[4, "宮城県", "仙台市", "230万", "牛タン", "ずんだ餅", "仙台味噌", "松島", "仙台城", "青葉の森公園"],
[5, "秋田県", "秋田市", "100万", "きりたんぽ", "稲庭うどん", "竿燈祭り", "男鹿半島", "田沢湖", "角館"],
[6, "山形県", "山形市", "110万", "さくらんぼ", "冷たいラーメン", "芋煮", "蔵王温泉", "山形城", "立石寺"],
[7, "福島県", "福島市", "190万", "桃", "会津そば", "福島ワイン", "会津若松城", "猪苗代湖", "大内宿"],
[8, "茨城県", "水戸市", "290万", "納豆", "メロン", "梨", "筑波山", "霞ケ浦", "偕楽園"],
[9, "栃木県", "宇都宮市", "200万", "餃子", "とちおとめ", "日光東照宮", "日光山輪王寺", "中禅寺湖", "華厳の滝"],
[10, "群馬県", "前橋市", "190万", "こんにゃく", "上毛かるた", "群馬煮", "赤城山", "榛名湖", "草津温泉"],
[11, "埼玉県", "さいたま市", "730万", "菓子パン", "さきたま古墳", "浦和レッズ", "さいたまスーパーアリーナ", "川越氷川神社", "秩父夜祭"],
[12, "千葉県", "千葉市", "620万", "落花生", "南房総いちご", "千葉ロッテ", "東京湾アクアライン", "成田山新勝寺", "館山"],
[13, "東京都", "新宿区", "1400万", "東京ばな奈", "すき焼き", "寿司", "浅草寺", "東京タワー", "東京ディズニーランド"],
[14, "神奈川県", "横浜市", "920万", "横浜中華街", "象の鼻", "カップヌードル", "みなとみらい", "横浜ランドマークタワー", "鎌倉大仏"],
[15, "新潟県", "新潟市", "230万", "新潟コシヒカリ", "佐渡金箔", "にいがたフェア", "越後湯沢", "佐渡島", "上越国際スキー場"],
[16, "富山県", "富山市", "105万", "白えび", "富山ブラック", "富山湾すし", "立山黒部アルペンルート", "宇奈月温泉", "立山"],
[17, "石川県", "金沢市", "115万", "金沢カレー", "加賀野菜", "金箔", "兼六園", "金沢城", "能登半島"],
[18, "福井県", "福井市", "75万", "越前ガニ", "福井の恐竜", "鳥越祭り", "永平寺", "鳥越祭り", "若狭湾"],
[19, "山梨県", "甲府市", "85万", "甲州ワイン", "甲府焼きそば", "山梨県笛吹川フルーツ公園", "忍野八海", "甲府城", "河口湖"],
[20, "長野県", "長野市", "210万", "りんご", "そば", "信州ミソ", "善光寺", "上高地", "松本城"],
[21, "岐阜県", "岐阜市", "200万", "ほうとう", "守山緑地", "岐阜城", "白川郷", "高山", "柳ヶ瀬"],
[22, "静岡県", "静岡市", "370万", "静岡お茶", "富士宮やきそば", "駿河湾ささえび", "富士山", "伊豆半島", "浜松城"],
[23, "愛知県", "名古屋市", "750万", "みそカツ", "手羽先", "名古屋城", "名古屋テレビ塔", "熱田神宮", "名古屋港アクアリウム"],
[24, "三重県", "津市", "180万", "伊勢うどん", "松阪牛", "伊勢海老", "伊勢神宮", "鳥羽水族館", "志摩スペイン村"],
[25, "滋賀県", "大津市", "140万", "びわ湖", "近江牛", "彦根城", "比叡山", "びわ湖大花火大会", "長浜黒壁スクエア"],
[26, "京都府", "京都市", "260万", "抹茶", "湯葉", "八つ橋", "清水寺", "金閣寺", "嵐山"],
[27, "大阪府", "大阪市", "880万", "たこ焼き", "お好み焼き", "串カツ", "大阪城", "通天閣", "ユニバーサルスタジオジャパン"],
[28, "兵庫県", "神戸市", "550万", "神戸ビーフ", "たらこスパゲッティ", "六甲山", "有馬温泉", "姫路城", "淡路島"],
[29, "奈良県", "奈良市", "130万", "鹿せんべい", "奈良漬", "興福寺", "大仏", "春日大社", "飛鳥"],
[30, "和歌山県", "和歌山市", "90万", "梅", "紀州備長炭", "白浜", "高野山", "熊野古道", "串本"],
[31, "鳥取県", "鳥取市", "55万", "鳥取砂丘", "20世紀梨", "米子", "大山", "皆生温泉", "浜村温泉"],
[32, "島根県", "松江市", "70万", "出雲そば", "隠岐の島", "松江城", "出雲大社", "玉造温泉", "石見銀山"],
[33, "岡山県", "岡山市", "190万", "桃", "きびだんご", "岡山後楽園", "倉敷", "吉備路", "鷲羽山"],
[34, "広島県", "広島市", "280万", "お好み焼き", "もみじ饅頭", "原爆ドーム", "宮島", "平和記念公園", "しまなみ海道"],
[35, "山口県", "山口市", "140万", "ふぐ", "瓦そば", "赤間神宮", "下関", "秋吉台", "角島"],
[36, "徳島県", "徳島市", "75万", "すだち", "とくしまラーメン", "眉山", "阿波おどり", "鳴門の渦潮", "大歩危・小歩危"],
[37, "香川県", "高松市", "100万", "讃岐うどん", "さぬきチキン", "栗", "栗林公園", "金刀比羅宮", "小豆島"],
[38, "愛媛県", "松山市", "140万", "みかん", "たい焼き", "道後温泉", "松山城", "しまなみ海道", "八幡浜"],
[39, "高知県", "高知市", "70万", "かつおのたたき", "土佐酒", "桂浜", "高知城", "四万十川", "足摺岬"],
[40, "福岡県", "福岡市", "510万", "博多ラーメン", "明太子", "太宰府天満宮", "柳川", "久留米", "海の中道海浜公園"],
[41, "佐賀県", "佐賀市", "80万", "佐賀牛", "有田焼", "佐賀城", "武雄温泉", "嬉野温泉", "夢街道ナポレオンロード"],
[42, "長崎県", "長崎市", "130万", "カステラ", "ちゃんぽん", "長崎ランタンフェスティバル", "原爆資料館", "五島列島", "長崎港"],
[43, "熊本県", "熊本市", "180万", "馬刺し", "阿蘇高原ミルク", "熊本城", "水前寺成趣園", "阿蘇山", "産山村"],
[44, "大分県", "大分市", "115万", "地鶏", "別府温泉", "大分城", "地獄めぐり", "九重夢大吊橋", "臼杵石仏"],
[45, "宮崎県", "宮崎市", "110万", "宮崎牛", "ひやご", "青島", "鵜戸神宮", "都城", "高千穂峡"],
[46, "鹿児島県", "鹿児島市", "160万", "さつま揚げ", "黒砂糖", "桜島", "霧島温泉", "知覧特攻平和会館", "屋久島"],
[47, "沖縄県", "那覇市", "146万", "ゴーヤ", "泡盛", "沖縄そば", "首里城", "美ら海水族館", "万座毛"]
];
const riversInJapan = [
["通番", "河川名", "最初の県", "長さ(km)"],
[1, "信濃川", "長野県", 367],
[2, "利根川", "群馬県", 322],
[3, "多摩川", "山梨県", 138],
[4, "荒川", "埼玉県", 176],
[5, "隅田川", "東京都", 23.5],
[6, "鴨川", "京都府", 31],
[7, "四万十川", "高知県", 196],
[8, "野田川", "徳島県", 124],
[9, "吉野川", "徳島県", 196],
[10, "瀬戸内海", "大分県", 450],
[11, "日本海", "山口県", 800],
[12, "五条川", "奈良県", 85],
[13, "石狩川", "北海道", 246],
[14, "天塩川", "北海道", 256],
[15, "旭川", "北海道", 140],
[16, "神崎川", "兵庫県", 50],
[17, "早瀬川", "岡山県", 55],
[18, "淀川", "京都府", 124],
[19, "筑後川", "福岡県", 143],
[20, "福井川", "福井県", 82]
];