Autor Zpráva
JS king
Profil *
spravil som primitivny program v JS, kde chcem prepinat cez taby contet...

<div id="pos1">

			<div id="con1">Con1</div>

			<div id="con2">Con2</div>

			<div id="con3">Con3</div>

			

			<div id="right">

				<div id="tab1"><a href="javascript:tab1();">Klik1</a></div>

				<div id="tab2"><a href="javascript:tab2();">Klik2</a></div>

				<div id="tab3"><a href="javascript:tab3();">Klik3</a></div>	

			</div>

			<div class="clr"></div>

		</div>




function tab1() {
	var con1, con2, con3, tab2;
	
	con1 = document.getElementById("con1");
	con2 = document.getElementById("con2");
	con3 = document.getElementById("con3");	
	tab2 = document.getElementById("tab2");
	
	if(tab1) {
		con2.style.display="none";
		con1.style.display="block";
		con3.style.display="none";
	}
}

function tab2() {
	var con1, con2, con3, tab2;
	
	con1 = document.getElementById("con1");
	con2 = document.getElementById("con2");
	con3 = document.getElementById("con3");	
	tab2 = document.getElementById("tab2");
	
	if(tab2) {
		con2.style.display="block";
		con1.style.display="none";
		con3.style.display="none";
	}
}

function tab3() {
	var con1, con2, con3, tab2;
	
	con1 = document.getElementById("con1");
	con2 = document.getElementById("con2");
	con3 = document.getElementById("con3");	
	tab2 = document.getElementById("tab2");
	
	if(tab3) {
		con2.style.display="none";
		con1.style.display="none";
		con3.style.display="block";
	}
}


toto funguje... ale skor som to skusal takto:

function tabs() {
	var con1, con2, con3, tab1, tab2, tab3;
	con1 = document.getElementById("con1");
	con2 = document.getElementById("con2");
	con3 = document.getElementById("con3");	
	
	tab1 = document.getElementById("tab1");
	tab2 = document.getElementById("tab2");
	tab3 = document.getElementById("tab3");	
	
	
	if(tab2) {
		con2.style.display="block";
		con1.style.display="none";
		con3.style.display="none";
	}
	
	if(tab3) {
		con3.style.display="block";
		con1.style.display="none";
		con2.style.display="none";
	}
}



ale ci kliknem na Kli1, alebo klik2 aebo klik3 furt mi to da len con3 div... neviete preco? vdaka za radu.
Darker
Profil
Máš to hrozně neefektivní. S dovolením skript zkrátím:
function tabSwitch(tab) {
document.getElementById("con1").style.display="none";
document.getElementById("con2").style.display="none";
document.getElementById("con3").style.display="none";    
document.getElementById("tab2").style.display="none";
document.getElementById(tab).style.display="block";
}

Daleko lepší řešení je pomocí cycklu, ale to bys, soudě podle tvého výtvoru, nepochopil

Následuje HTML:
<div id="pos1">

            <div id="con1">Con1</div>

            <div id="con2">Con2</div>

            <div id="con3">Con3</div>

            

            <div id="right">

                <div id="tab1"><a href="javascript:tabSwitch(this.id);">Klik1</a></div>

                <div id="tab2"><a href="javascript:tabSwitch(this.id);">Klik2</a></div>

                <div id="tab3"><a href="javascript:tabSwitch(this.id);">Klik3</a></div>    

            </div>

            <div class="clr"></div>

        </div>

Správnější by asi taky bylo pracovat s objektem než ID ale to je také fuk...
JS king
Profil *
Darker:
jo tak by sa to tiez dalo, ale nevyriesil si predmet temy.

- Daleko lepší řešení je pomocí cycklu, ale to bys, soudě podle tvého výtvoru, nepochopil

Myslis? Skus a ja ti poviem ci som to pochopil alebo nie.
Chamurappi
Profil
Reaguji na JS kinga:
Nazvat si proměnné přesně stejně jako názvy funkcí je hloupé, protože sdílejí stejný prostor názvů a musíš si dávat pozor, kdy je tab2 funkce a kdy je to <div>.
Stejně tak není příliš prozíravé nazývat funkce v JS stejně jako jsou id elementů ve stránce.

Když koukám na tvůj první kód:
9: „if(tab1) {
Co si myslíš, že dělá tahle podmínka? Kontroluje, jestli je v proměnné tab1 něco pravdivého (nenulového), což vždy je — je tam celá funkce tab1.

24: „if(tab2) {
V tab2 je pro změnu objekt <div id="tab2">, pokaždé. Podmínka je opět splněna vždy.
Stejně tak v druhém uváděném kódu dáváš do proměnných tab1tab3 vyhledané HTML elementy… a pak také zkoumáš, jestli existují?

Na tvém místě bych to vyřešil jinak. Odkazům bych dal takovýto skript:
<a href="javascript:void(document.getElementById('pos1').className = 'selN')">KlikN</a> (za N si doplň 1, 2, 3)
… a ve stylech bych se postaral o to, aby v závislosti na nastavené třídě selN na elementu s id="pos1" byla část potomků skrytá.


Reaguji na Darkera:
<a href="javascript:tabSwitch(this.id);">
Nepůjde, window nemá id :-)
I kdyby to byl onclick, tak dotyčné <a> nemá id.
JS king
Profil *
Chamurappi:
Ne. Ja som skor za externy subor. Nemam rad ked sa take dlhe scripty vkladaju rovno do html....
Chamurappi
Profil
Reaguji na JS kinga:
Nemam rad ked sa take dlhe scripty vkladaju rovno do html
Tak si ten jeden jediný řádek dej do funkce (kde selN bude argument), tu do externího souboru a volej ji.
Proč to nemáš rád? Proč ti ten skript připadá dlouhý?

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0