クラス名を使用して、リンクが選択された後にリンクの色を変更しようとしています。そのため、新しい色のままですが、別のリンクが選択されるまでは元に戻ります。
この質問でMartin Koolによって投稿されたこのコードを使用しています:
<html>
<head>
<script>
document.onclick = function(evt) {
var el = window.event? event.srcElement : evt.target;
if (el && el.className == "unselected") {
el.className = "selected";
var siblings = el.parentNode.childNodes;
for (var i = 0, l = siblings.length; i < l; i++) {
var sib = siblings[i];
if (sib != el && sib.className == "selected")
sib.className = "unselected";
}
}
}
</script>
<style>
.selected { background: #f00; }
</style>
</head>
<body>
<a href="#" class="selected">One</a>
<a href="#" class="unselected">Two</a>
<a href="#" class="unselected">Three</a>
</body>
テーブル内のリンクを外そうとするまではうまくいきます。どうしてこれなの?初心者なので安心してください。
エラーはありません。リンクは「選択済み」クラスに変更されていますが、別のリンクが選択されると、古いリンクは「未選択」に変更されるのではなく、「選択済み」クラスを保持しています。基本的に、私が知る限り、vlink 属性のように機能していますが、これは私が目指しているものではありません。
はい、リンクはすべて別のセルにあります。正しく機能するようにコードを変更する方法を教えてください。
わかりました、実際、私は話すのが早すぎました。
document.onclick = function(evt)
{
var el = window.event? event.srcElement : evt.target;
if (el && el.className == 'unselected')
{
var links = document.getElementsByTagName('a');
for (var i = links.length - 1; i >= 0; i--)
{
if (links[i].className == 'selected')
links[i].className = 'unselected';
}
el.className = 'selected';
}
return false;
}
あなたが私にくれたこのコードは視覚的にうまく機能し、私がやりたいことを正確に実行します。ただし、リンクが機能しなくなります...色は変わりますが、何にもリンクしません。スクリプトを削除すると、正常に機能します。私は何を間違っていますか/これを機能させるには何を変更する必要がありますか?
<div>
また、リンクがすべてタグで区切られた 1 つのタグ内にある、私の Web サイトの別の場所で同じことをしたいと考えてい<p>
ます。どうすればこれを機能させることができますか?