我有一個項目列表:切換類名
<ul id='list'>
<li id='1-i' class='visible'><a href='javascript:return false;' onclick="toggle_class('1-i');">Toggle #1</a></li>
<li id='2-i' class='visible'><a href='javascript:return false;' onclick="toggle_class('2-i');">Toggle #2</a></li>
<li id='3-i' class='visible'><a href='javascript:return false;' onclick="toggle_class('3-i');">Toggle #3</a></li>
<li id='4-i' class='visible'><a href='javascript:return false;' onclick="toggle_class('4-i');">Toggle #4</a></li>
</ul>
如果你點擊的項目之一(即「切換#1」),我希望所有其他項目的類名從變爲可見變爲隱形。
如果你現在點擊其他項目,我想這個項目的類名稱更改爲可見(與所有其他類名沒有任何影響,他們應該保持原樣)
簡單的例子:您首先點擊「切換#4」,然後點擊「切換#1」。結果應該是:
<ul id='list'>
<li id='1-i' class='visible'><a href='javascript:return false;' onclick="toggle_class('1-i');">Toggle #1</a></li>
<li id='2-i' class='invisible'><a href='javascript:return false;' onclick="toggle_class('2-i');">Toggle #2</a></li>
<li id='3-i' class='invisible'><a href='javascript:return false;' onclick="toggle_class('3-i');">Toggle #3</a></li>
<li id='4-i' class='visible'><a href='javascript:return false;' onclick="toggle_class('4-i');">Toggle #4</a></li>
</ul>
我試着寫一個js的功能,但該行爲是不同的,從我預計:
var firstrun = true;
function toggle_class(id) {
var thisElem = document.getElementById(id);
var invisible = "invisible";
var visible = "visible";
if (thisElem.className == 'invisible' && !firstrun) {
thisElem.className = thisElem.className.replace(invisible, visible);
} else {
thisElem.className = thisElem.className.replace(visible, invisible);
}
if (firstrun) {
var children = document.getElementsByClassName('visible');
for (var i = 0; i < children.length; i++) {
if (children[i].id != id) {
children[i].className = thisElem.className.replace(visible, invisible);
}
}
}
firstrun = false;
}
首先點擊,選擇的項目改變其類無形,列表中的每個第二項都是如此。我不明白爲什麼會發生這種情況。我需要在代碼中進行更改才能使其工作?
猜測,爲什麼它已經downvoted:1,採用了jQuery,即使OP隻字不提jQuery的。 2.它不像OP請求的那樣工作(第一次點擊改變除點擊之外,第二次點擊改變僅點擊元素) – Mackan