以下が実装例です。
```html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>犬種アスキーアートジェネレーター</title>
<style>
body {
text-align: center;
}
h1 {
font-size: 24px;
margin-top: 30px;
}
form {
margin-top: 30px;
}
textarea {
width: 70%;
height: 200px;
margin-top: 20px;
overflow: scroll;
font-family: monospace;
white-space: pre;
}
#error-message {
color: red;
margin-top: 10px;
}
</style>
</head>
<body>
<h1>犬種アスキーアートジェネレーター</h1>
<form onsubmit="event.preventDefault(); generateAsciiArt();">
<label for="dog-breed-input">犬種名:</label>
<input type="text" id="dog-breed-input" required>
<button type="submit">描く!</button>
</form>
<div>
<textarea id="ascii-art-output" readonly></textarea>
<div id="error-message"></div>
</div>
<script>
function generateAsciiArt() {
const dogBreedInput = document.getElementById('dog-breed-input').value.trim().toLowerCase();
let asciiArt = '';
let errorMessage = '';
switch (dogBreedInput) {
case 'shiba':
asciiArt = ` ___
// \\\\
\\\\_V_///
/` + "```" + `\\
/ 0 0 \\
/ ____/|
\\_______|`;
break;
case 'poodle':
asciiArt = ` ______
.---'::' '---.
___:____\\____________`:_
| _ '_
| Hot CoCoa since (_) \\
|__________________| /
\\@(@) | /
| /`
break;
case 'bulldog':
asciiArt = ` /\\_____/\\
| o o |
| ==_~_~_~_ ~|
\\_ _ -|
\\/_____\\/\`
break;
case 'dachshund':
asciiArt = ` ____\\__
/~___\\~___\\
( [○] [○] ]
\\ \\ \\
`'---'\\--\\`;
break;
default:
errorMessage = 'その犬種は知らんわ・・・';
}
const asciiArtOutput = document.getElementById('ascii-art-output');
asciiArtOutput.value = asciiArt;
const errorMessageElem = document.getElementById('error-message');
errorMessageElem.textContent = errorMessage;
}
</script>
</body>
</html>
```
「アスキーアート」ということで、犬の形を文字で描画しています。今回は4種類の犬種に対してそれぞれのアスキーアートを用意し、入力された犬種名に対応するアスキーアートを表示するようにしました。
また、犬種名が不正な場合はエラーメッセージを表示するようにしました。
ジョークとしては、プードルのアスキーアートに「Hot CoCoa since」を書いてみました。