Egy external javascript fájlhoz csak egy parancsot lehet hozzárendelni?
Most kezdtem el tanulni a javascriptet és kreáltam egy ilyet:
HTML
<h2>External JavaScript</h2>
<p id="demo">A Paragraph.</p>
<button type="button" onclick="myFunction()">Try it</button>
<p>(myFunction is stored in an external file called "myScript.js")</p>
<h2>External JavaScript</h2>
<p id="hello">A Paragraph.</p>
<button type="button" onclick="myFunction()">Try it</button>
<p>(myFunction is stored in an external file called "myScript.js")</p>
JAVSCRIPT
function myFunction() {
document.getElementById("demo").innerHTML = "Paragraph changed.";
}
function myFunction() {
document.getElementById("hello").innerHTML = "Paragraph also changed.";
}
Bármelyik "try it" gombra kattintok, mindig a második <p> elem változik meg attól függetlenül, hogy különböző ID-t használtam a js file-ban. Mi lehet a gond?
Nem vagyok egy óriási JS-guru, de biztos, hogy ilyen formán működik a függvény-felüldefiniálás?
Konkrétan kétszer egymás után ugyanazt a függvényt definiáltad, amihez hasonló mondjuk C-ben vagy Pascalban le sem fut, mert fordítási hibát okoz. Örülhetsz, hogy a JS egyáltalán ímmel-ámmal, de lefut.
Létezik hasonló dolog objektum-orientált nyelvekben, a polimorfizmus, amikor egy függvényt több módon is paraméterezhetsz, de ez még annak sem megy el, hiszen mindkét függvénynek ugyanaz a paraméterlistája (mindkettőnek üres). Honnan tudná a fordító, hogy melyiknek kell lefutni?
Hagyd a dom-ot, kezd altalanos programozassal
JavaScriptben nincsenek parancsok.
Ettől a kódtól meg nem tudom mit vársz, a függvény második definíciója simán felülcsapja az elsőt.
Az a gond, hogy a változók és a példában is szereplő változók deklarálásákor "emelésre" (hoisting) kerülnek, így az azonos névvel ellátott változók és függvények újradefiniálódnak.
Én a helyedben kiszedném a Javascript-eseményeket a HTML-kódból, belerakva a Javascript kódba - példa:
Akadt meg1 problemam es gondoltam nem nyitok meg1 kerdest hozza, hatha kapok itt valaszt. Fapadosan de a problemat megoldottam viszont hozzaadtam meg ket scriptet a kulso js file-hoz amiket nem jelenit meg semmi viszont a codepen-en minden rendesen mukodik.
[link] - asterix2, asterix id-k nem jelennek meg, de a tobbi script siman mukodik. Mit rontok el?
Attól függ, hol hívod meg a külső script-et. codepen valószűleg hozzáköti a DOM (oldal szerkezet) beöltéséhez.
Tedd a script beágyazást (embed tag) a html fájlod végére. Így garantált, hogy amikre hivatkozol, azok már léteznek:
Ebben az esetben létezik az "asterix" azonosítóval rendelkező tag, tehát kerül érték az innerHTML-be.
<p id="asterix"></p>
<script>
document.getElementById("asterix").innerHTML = math(4, 3);
</script>
Ebben az esetben a script nem találja meg az asterix azonosítójú elemet, mivel még nem létezik a DOM-ban, így annak nem létezik innerHTML-je se, jobb esetben console-on erről hibaértesítést kapsz.
<script>
document.getElementById("asterix").innerHTML = math(4, 3);
</script>
<p id="asterix"></p>
Kedves utolso, koszonom valaszod. Azt gondoltam , hogy a kulso js file ugyanugy mukodik, mint egy kulso css file. Megadom az ID-t stb es a html fajl felismeri.
Bonyolult ugy megoldani a "hatalmas" problemamat, hogy az asterix-et a kulso js file-bol hivja be?
Egyáltalán nem. Mint mondtam, a külső js fájl beágyazását vagy a fájl végére teszed, vagy stílusosabban, marad a header-ben, de valahogy így nézne ki a javascript fájlod körítéssel:
window.addEventListener('load', function(){
// te kódod, ami lefut, ha betöltődött az oldal
});
Koszi szepen, mukodik. A linket lementem.
Nehez a felfogasom:), mivel ezidaig kozom nem volt ehhez a vilaghoz igy nehezebben megy 1-1 dolog megertese.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!