Autor Zpráva
lachim15
Profil
Zdravím, potřeboval bych pomoct s jedním JS.

Mám spoustu řádků pod sebou, které přes CSS sprite načítají obrázky a pokud na některé z nich kliknu, poskládají obrázek a vypíší požadované texty (Co řádek to jiný poskládaný obrázek).
<br><span class='obrazek class1' onclick="app();"></span>
<br><span class='obrazek class2' onclick="app();"></span>
<br><span class='obrazek class3' onclick="app();"></span>
<br><span class='obrazek class4' onclick="app();"></span>
<br><span class='obrazek class5' onclick="app();"></span>
<br><span class='obrazek class6' onclick="app();"></span>
.
.
.
.

A reaguje na ně JS:
function app() {
document.getElementById('nadpis').innerHTML = "Nějaký text"; 
document.getElementById('nadpis2').innerHTML ="Nějaký text";
document.getElementById('pole1').className = "neco obrazek2";
document.getElementById('pole2').className = "neco2 obrazek2";
document.getElementById('pole3').className = "neco3 obrazek2";
document.getElementById('pole4').className = "neco4 obrazek2";
document.getElementById('pole5').className = "neco5 obrazek2";
document.getElementById('pole6').className = "neco6 obrazek2";
document.getElementById('pole7').className = "neco7 obrazek2";
document.getElementById('pole8').className = "neco8 obrazek2";
document.getElementById('pole9').className = "neco9 obrazek2";
document.getElementById('pole10').className = "neco10 obrazek2";
document.getElementById('cislo').innerHTML = "Nějaké číslo";
}

Potřeboval bych nějak upravit, abych pro každý řádek class1, class2, class3 ... nemusel mít zvlášť takhle dlouhý js, ale například aby se zachovalo co potřebuji, ale mohl bych to dosadit za proměnné.
Například že místo "Nějaký text" by byla proměnná, která by byla definovaná ve stejném JS souboru pro každý řádek (<span>) zvlášť.

Díky moc za každou radu :)
KryVosa
Profil *
Přidej argument té funkce, jako každou proměnnou:
function app(neakyText, neakeCislo){
document.getElementById('nadpis').innerHTML = nejakýText; 
document.getElementById('nadpis2').innerHTML =nejakýText;
document.getElementById('cislo').innerHTML = NeakeCislo;
//a tak dále...
}
Pak akorát do těch onClicků vhodíš ty argumenty:
<span class='obrazek class1' onclick="app('text v nadpisech', 10);"></span>
lachim15
Profil
Mno ono některé texty budou dlouhé a řádků bude opravdu mnoho. Chtěl jsem se vyhnout tomu, aby nebylo na "viditelné" stránce v kódu moc znaků. Myslel jsem spíš něco jako.., naznačím trochu přesněji pro pochopení:

function app() {
document.getElementById('nadpis').innerHTML = promenna1; 
document.getElementById('nadpis2').innerHTML = promenna2;
document.getElementById('pole1').className = promenna3;
document.getElementById('pole2').className = promenna4;
document.getElementById('pole3').className = promenna5;
// a tak dále ...
}

a pak už jen vypisovat pro každý řádek zvlášť, co potřebuji, něco na způsob:

První řádek (<br><span class='obrazek class1' onclick="app();"></span>)
promenna1 = "Nějaký náhodný text pro představu".
promenna2 = "Další odlišný text".
promenna3 = "css_class"
....

Druhý řádek (<br><span class='obrazek class2' onclick="app();"></span>)
promenna1 = "zase text".
promenna2 = "text".
promenna3 = "jina_css_class"
....

a tak dále....

Jinak řečeno, že po kliknutí na obrázek (<span>) by to proletělo ten horní script a podle řádku by si to dosadilo proměnné.

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:

Prosím používejte diakritiku a interpunkci.

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