Autor Zpráva
BMWdejf
Profil *
Zdravím,
potřeboval bych poradit na stránce mám tento javascript
window.onscroll = function () {
var banner = document.querySelector('#banner');
if (window.scrollY > 270) {
  banner.style.top = "10px";
  banner.style.position = "fixed";
  banner.style.button = "50px";
} else {
  banner.style.position = "initial";
  banner.style.top = "auto";
}

vše funguje tak jak má až na jednu drobnost ve chvíli kdy vložím a zprovozním druhý javascript na té samé stránce :
window.onscroll = function () {
var adsense = document.querySelector('#adsense');
if (window.scrollY > 630) {
  adsense.style.top = "10px";
  adsense.style.position = "fixed";
} else {
  adsense.style.position = "initial";
  adsense.style.top = "auto";
}
}

přestane ten první javascript fungovat a funguje jen ten druhý.

Každý z nich je uložen v samostatném souboru.

Dokázal by mi zde někdo poradit proč se tyto dva scripty navzájem ruší a co udělat aby mohli oba dva vedle sebe paralerně běžet.

Děkuji za jakoukoliv pomoc.
Orkee
Profil
Tou druhou funkcí si přepisuješ ten první event. Nejednodušší bude, když kód z druhé funkce vložíš do té první anonymní funkce. Nebo půjdeš cestou addeventlistener
Popř v jquery tuším metoda .bind('scroll',function(){...});
BMWdejf
Profil *
Super díky za reaklci trochu jsem si to proštudoval ale jelikož je velký předpoklad že web bude otevírán i ve starších prohlížečích než je IE 9 tak potřebuji aby to fungovalo i v nich což asi addeventlistener nebude to pravé řešení

Můžu se tě zeptat jak jsi to myslel to vložení druhé funkce do té první?

Díky
Chamurappi
Profil
Reaguji na BMWdejfa:
web bude otevírán i ve starších prohlížečích než je IE 9 tak potřebuji aby to fungovalo i v nich
Metoda document.querySelector nefunguje v Explorerech starších než verze 8. Proč na hledání podle ID nepoužíváš document.getElementById?
Také u window.scrollY dost pochybuji, že funguje ve starších Explorerech, lepší by asi bylo zjišťovat vlastnost scrollTop z <html> (+ <body>).
A ještě do třetice — přiřazení "initial" (jakožto neznámé hodnoty) také v Explorerech vyvolá výjimku. Proč nepřiřazuješ prázdný řetězec?
Odkud jsi tento příšerný skript vyštrachal?

Každý z nich je uložen v samostatném souboru.
Proč? Musí to tak být?

jak jsi to myslel to vložení druhé funkce do té první
Nejsnazší je tam zkopírovat její tělo. Prostě mít obojí v jedné funkci.
BMWdejf
Profil *
Řekl bych že ještě něco dělám špatně ale nevím co :(
window.onscroll = function () {
var banner = document.getElementById('banner');
if (window.scrollTop > 270) {
  banner.style.top = "10px";
  banner.style.position = "fixed";
} else {
  banner.style.position = "relative";
  banner.style.top = "auto";
}
var adsense = document.getElementById('adsense');
if (window.scrollTop > 630) {
  adsense.style.top = "10px";
  adsense.style.position = "fixed";
} else {
  adsense.style.position = "relative";
  adsense.style.top = "auto";
}
}

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: