このHTMLランキングリストの例を発展させ、より動的でインタラクティブなものにするには、JavaScriptやサーバーサイドのプログラミングが必要です。以下に、簡単なJavaScriptを追加してランキング項目をユーザーが変更できるようにした例を示します。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Interactive Ranking</title>
<style>
body {
font-family: Arial, sans-serif;
}
.ranking {
max-width: 400px;
margin: 20px auto;
}
.ranking-item {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
padding: 10px;
border: 1px solid #ccc;
border-radius: 5px;
}
.ranking-item input {
width: 50px;
}
</style>
</head>
<body>
<div class="ranking">
<h2>Interactive Ranking</h2>
<div class="ranking-item">
<span>1.</span>
<input type="text" value="項目1">
</div>
<div class="ranking-item">
<span>2.</span>
<input type="text" value="項目2">
</div>
<div class="ranking-item">
<span>3.</span>
<input type="text" value="項目3">
</div>
</div>
<script>
document.addEventListener("DOMContentLoaded", function() {
const rankingItems = document.querySelectorAll('.ranking-item input');
rankingItems.forEach((item, index) => {
item.addEventListener('change', function() {
updateRanking();
});
});
function updateRanking() {
const rankingItemsArray = Array.from(rankingItems);
rankingItemsArray.sort((a, b) => {
return b.value - a.value;
});
rankingItemsArray.forEach((item, index) => {
item.parentElement.querySelector('span').innerText = (index + 1) + '.';
});
}
});
</script>
</body>
</html>
この例では、各ランキング項目に対してテキストボックスを追加し、ユーザーが項目名を変更できるようにしました。また、JavaScriptを使用してユーザーが順位を変更した際に、順位の更新を行っています。
ただし、この例ではクライアントサイドでのみランキングの順位が変更され、ページを更新すると元に戻ります。サーバーサイドのデータベースなどを使用してデータを永続的に保存・更新する場合は、より高度な処理が必要です。