webForumDet fria alternativet

Dölja text utan att påverka stilmall

12 svar · 1 081 visningar · startad av silfver

silfverMedlem sedan apr. 200312 679 inlägg
#1

Okay, då ska vi se ifall jag lyckas förklara det här så att ni förstår. :D

Jag håller på med en liten fotoblog. Och på den sidan har jag två stilmallar, en med svart bakgrund, och en med vit. Jag använder styleswitcher från alistapart för att bläddra mellan de båda.

Men jag vill även kunna ha valmöjligheten att dölja all text. Men gör jag en stilmall för det så blir det fel, eftersom styleswitcher då inte vet vilken bakgrundsfärg man hade valt (svart eller vit).

Finns det något sätt som man kan dölja text på, utan att byta stilmall? Jag vill själv kunna välja vilka objekt som ska döljas.

Så här hade jag tänkt att det skulle se ut:

» black / white
» hide / show text

Förstår ni? :)

Peter SMedlem sedan dec. 20025 483 inlägg
#2

Använd en cookie för att spara vilken bakgrundsfärg det är som gäller.

silfverMedlem sedan apr. 200312 679 inlägg
#3

Peter S skrev:

Använd en cookie för att spara vilken bakgrundsfärg det är som gäller.

Den här styleswitcher använder cookies. Men det är inte bara bakgrundsfärgen som ändras, det är länkar och texter också. Färgerna inverteras helt enkelt.

yadorMedlem sedan mars 2004455 inlägg
#4

Om du har all din text inom en sorts taggar så kan du ju använda getElementsByTagName() för att få alla elementen av den sorten. Sedan kan enkelt gömma dem. Exempel:

var b = document.getElementsByTagName("p");
for(i=0;i<b.length;i++)
	b[i].style.display = "none";
silfverMedlem sedan apr. 200312 679 inlägg
#5

Tack. :) Förlåt, men jag kan verkligen inge javascript. Hur aktiverar man din funktion? All text ligger ju inom en p-tagg så det borde väl funka. Men det gör ju iofs bilderna också, och dem vill jag ju inte dölja. :o

voigtann1Medlem sedan juni 20019 519 inlägg
#6
function hideText() {
var b = document.getElementsByTagName("p");
for(i=0;i<b.length;i++)
	b[i].style.display = "none";
}

och html:

<a href="javascript: hideText()">hide text</a>
silfverMedlem sedan apr. 200312 679 inlägg
#7

Tack. Det där fungerar ju ganska bra. Men. Mina bilder döljs ju också eftersom de ligger <p><img></p>... Går det att haxxa? Och hur får man tillbaka texten? :D

yadorMedlem sedan mars 2004455 inlägg
#8

Jag har ingen aning om hur man kan få bilderna att visa sig, men om du vill visa texten igen så kan du göra såhär:

function showText()
{
	var b = document.getElementsByTagName("p");
	for(i=0;i<b.length;i++)
		b[i].style.display = (b[i].style.display == "none")?"":"none";
}
jawbreakerMedlem sedan jan. 2003296 inlägg
#9

Om detta hör ihop med det jag svarade på i htmlforumet förut (vilket det ser ut att göra) borde du kunna göra något sådant här:

.notext div p + p {
	display: none;
}
function hideText()
{
	//Om du har någon form av wrapper kring alla dina bilder skulle du kunna lägga till klassen "notext" på den, typ
	//document.getElementById("id:tpådinwrapper").className = "notext";
	//eller på body-taggen:
	document.body.className = "notext";

	//Förutsatt att du inte redan har något klassnamn satt på body-taggen eller lämpligt objekt... Har du det får detta justeras lite.
}
silfverMedlem sedan apr. 200312 679 inlägg
#10

Fasen, det blir så krångligt eftersom jag har flera objekt som ska döljas. Och det verkar inte vara så lätt att lösa. Det är ju egentligen alla dessa som ska bort:
#header
p.meta
div.display p + p

jawbreakerMedlem sedan jan. 2003296 inlägg
#11

Går det inte att smacka ihop alla på samma gång då:

.notext #header,
.notext p.meta,
.notext div.display p + p {
	display: none;
}

och sätta klassen "notext" (eller vad den nu ska heta) på något som omsluter alltihop (t ex body-taggen)?

silfverMedlem sedan apr. 200312 679 inlägg
#12

Ska pröva. :D Är din kod fullständig som du skrev där uppe? *prövar*
En grej till, sätter jag display: none, så visas ju ingenting som standard. :)

jawbreakerMedlem sedan jan. 2003296 inlägg
#13

Jag har ärligt talat inte testat koden, men den bör fungera tycker jag.

Men display: none gäller bara om de ligger inuti någonting med klassen "notext", och tanken var att du inte har den klassen satt på någonting från början, utan lägger till den på body-taggen (eller annat lämpligt ställe) med javascriptfunktionen (när du klickar på en länk eller så). Så display: none ska inte gälla förrän du faktiskt vill dölja din text.

142 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)