Autor Zpráva
maartinek
Profil
možná jsem se v titulce špatně vyjádřil, ale mám tyto dva scripty:

menu:

window.onload = montre;


function montre (id, notid) {
var d = document.getElementById(id);
for (var i = 1; i<=13; i++) {
if (document.getElementById('smenu'+i) && i!=notid) {document.getElementById('smenu'+i).style.display='none';}
}
if (d) {d.style.display='block';}
}


proužkování tabulky:

window.onload = init;


function init() {
stripeAllTables();
}

function stripeTable(t) {
var i, barva = true;
for (i=0; i<t.rows.length; i++) {
t.rows[i].className += barva ? ' tmave' : ' svetle';
barva = !barva;
}
}

function stripeAllTables() {
var t = document.getElementsByTagName('table');
for (var i=0; i<t.length; i++) stripeTable(t[i])
}


V šabloně stránky je mám zapsané jako

<script type="text/javascript" src="/menu.js"></script>


nebo

<script type="text/javascript" src="/tablestrip.js"></script>


každý sám funguje bez problémů, ale spolu nefungují. hlavně bych je chtěl umístit do jednoho souboru, třeba scripty.js.
poradíte prosím?
Joker
Profil
Protože ten pozdější přepíše tomu dřívějšímu událost window.onload
Dvě možnosti:
- napsat společnou inicializační funkci
window.onload = initMain()
function initMain(){
montre();
init();
}

- u složitějších skriptů nenastavovat window.onload natvrdo, ale přidávat novou obsluhu k případným předchozím. Nejlépe si na to vyrobit funkci a obsluhu události window.onload pak nastavovat jenom pomocí ní.
dracek
Profil
Joker
Není lepší přidat event listener? :)
maartinek
Profil
joker
díky za radu, ale nějak to nefunguje. zapsal jsem to takto:

window.onload = initMain()

function initMain(){
init();
montre();
}

function init() {
stripeAllTables();
}

function stripeTable(t) {
var i, barva = true;
for (i=0; i<t.rows.length; i++) {
t.rows[i].className += barva ? ' tmave' : ' svetle';
barva = !barva;
}
}

function stripeAllTables() {
var t = document.getElementsByTagName('table');
for (var i=0; i<t.length; i++) stripeTable(t[i])
}



function montre (id, notid) {
var d = document.getElementById(id);
for (var i = 1; i<=13; i++) {
if (document.getElementById('smenu'+i) && i!=notid) {document.getElementById('smenu'+i).style.display='none';}
}
if (d) {d.style.display='block';}
}


dracek
a pro mě by to bylo jednodušší? ukážeš jak prosím? vůbec totiž nevím o čem mluvíš. JS skoro nerozumím. díky
Joker
Profil
dracek
Není lepší přidat event listener? :)
Teoreticky ano.
Prakticky tu máme Internet Explorer, takže je potřeba event listener přidávat podle prohlížeče a proto bych si napsal tu vlastní funkci.

maartinek
na prvním řádku chybí středník.
Pokud to ani tak nepůjde, co to nahlásí za chyby?
maartinek
Profil
středník jsem doplnil, hlásí to

Chyba: montre is not defined
Zdrojový soubor: [url=http://localhost/tablestrip.js
]http://localhost/tablestrip.js
[/url]
Řádek: 4

edit:

vymazal jsem log chybové konzole ve firefoxu a vypadá to, že to nehlásí nic, jenže script nefunguje.

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: