Sziasztok!
A comment mutatra klikkelve elő kéne jönnie a
-nek ami meg is történik, viszont újra oda klikkelve nem történik semmi, azt szeretném, hogy eltűnjön.
Elképzelések esetleg?
<html>
<style type="text/css">
.hidden {
display: none;
{
.visible {
display: block;
}
</style>
<submit id="RenderComment_Btn">comment mutat</submit>
<div class="hidden" id="comment">
<span>commentek</span>
</div>
<script type="text/javascript">
var commentDiv = document.getElementById('comment');
var commentBtn = document.getElementById('RenderComment_Btn');
commentBtn.onclick = function() {
if (document.getElementById('comment').class = 'hidden') {
commentDiv.setAttribute('class', 'visible');
} else {
commentDiv.setAttribute('class', 'hidden');
}
};
</script>
</html>
Lehet ez így túl is van bonyolítva, de nekem elsőre így logikusnak tűnik. Aztán lehet nem az:)
Köszi előre is.
Üdv
ab
- 917 megtekintés
Hozzászólások
Szóval fentebb valamiért nem akarja az igazságot...
- A hozzászóláshoz be kell jelentkezni
Használd a classList.toggle-t (pl.: element.classList.toggle('hidden'))
- A hozzászóláshoz be kell jelentkezni
köszi, első körben nekem ez egy katyvasz, de próbálkozom.
azért szeretném megérteni, hogy az én általam elképzelt kód miért nem akar működni.
- A hozzászóláshoz be kell jelentkezni
Nem elég hozzáadni a hidden class-t, de le kell még venni visible-t is róla (és fordítva, természetesen.)
Szerk: ja látom nem hozzáadsz, hanem fixen beállítod. Akkor még lehet hiba, hogy az if-ben nem egyezőséget vizsgálsz, hanem értéket adsz (= az == helyett)
if (document.getElementById('comment').class = 'hidden') {
commentDiv.setAttribute('class', 'visible');
} else {
commentDiv.setAttribute('class', 'hidden');
}
Itt azt mondod (az if sorában), hogy a class legyen hidden, ha ez sikeres, akkor legyen visible (then ág), ha nem sikerülne valamiért hidden-re állítani a comment osztályát akkor futna le az else ágad.
--
openSUSE - KDE user
- A hozzászóláshoz be kell jelentkezni
Az én értelmezésemben a klikkelés után visible lesz a class. utána pedig már az else ágnak kéne lefutnia, hiszen az előbb átírtuk visiblere.
Rosszunk gondolkodom?
- A hozzászóláshoz be kell jelentkezni
Nem kellene minimum "==" az if-ben? Sima "=" nem ertekadas, ami mindig igazat ad vissza?
Sic Transit Gloria Mundi
- A hozzászóláshoz be kell jelentkezni
Jogos a két pont. == kell, így értelmesen fut le és nem vaktában. De még mindig az újra klikkelésnél nem tűnik el, illetve nem jön fel a nem látszik szöveg.
Kicsit kiegészítettem, hogy lássam pontosan a true vagy a false rész fut -e le.
De újra klikknél nem tűnik el...
- A hozzászóláshoz be kell jelentkezni
A setAttribute('class', ...)
helyett próbálkozz vagy a fentebb említett classList
-tel (dokumentacio) vagy a className = ...
-mel (dokumentacio). Utóbbi linken ajánlom a Notes bekezdést.
- A hozzászóláshoz be kell jelentkezni
Meg a kapcsos zárójelet se ártana helyesen kirakni a 4. sorban...
(Developer console nem ad figyelmeztetést?)
- A hozzászóláshoz be kell jelentkezni
:) sajnos nem segített a zárójel megfordítása. a notepad nem annyira kifinomult developer tool sajnos:)
a többi egyéb javaslatot megnézem, csak tényleg nem vágom ez miért nem akar működni:(
- A hozzászóláshoz be kell jelentkezni
A developer console a böngésződben van, pl Firefoxon Ctrl+Shift+K hozza elő.
Ha már egyszer beraktál egy elemet egy változóba, akkor használd onnan, rövidebb.
Arról viszont gőzöm sincs, hogy a .class miért problémás, de így megy:
commentBtn.onclick = function() {
console.log(commentDiv.getAttribute('class'));
if ( commentDiv.getAttribute('class') == 'hidden' ) {
commentDiv.setAttribute('class', 'visible');
console.log("true path");
} else {
commentDiv.setAttribute('class', 'hidden');
console.log("false path");
}
}
- A hozzászóláshoz be kell jelentkezni
Ja dee! Ahogy Ajnasz is utalt fentebb .class azért problémás, mert helyesen .className :(
- A hozzászóláshoz be kell jelentkezni
köszönöm, tökéletes, de hogy miért így...:)
A böngészős developer consolet köszi:)
- A hozzászóláshoz be kell jelentkezni