Diskuze: Problém, JS mi nefunguje na webu;
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 21 zpráv z 21.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Spíš sem dej kus kódu v JS, který ti nefunguje. Takhle z toho nic moc nepoznáme. Pokud používáš Chrome, tak se podívej do konzole (Ctrl + shift + J -> tab Console). Tam se logují chyby JavaScriptu a je to hodně užitečný nástroj pro debugování.
Ahoj, no, já jsem zkoušel kód na změnu formulářových polí atd. třeba na změnu rámečku a poté kontrolu zadaného řetězce (emailu,jména), ale nešlo mi to, tak jsem ho smazal a začal jsem zkoušet ty nejzákladnější jako třeba:
function zmen()
{$("h1").css("color", "yellow");
}
zmen();
a nefunguje mi ani tohle, natože třeba aby něco vypsal při stisknutí tlačítka. Zkoušel jsem se koukat na debugování, ale to mi nic nehlásí.
Ale třeba tyto hodiny mi fungují:
function startTime()
{
var today=new Date();
var h=today.getHours();
var m=today.getMinutes();
var s=today.getSeconds();
m=checkTime(m);
s=checkTime(s);
document.getElementById('txt').innerHTML=h+":"+m+":"+s;
t=setTimeout(function(){startTime()},500);
}
function checkTime(i)
{
if (i<10)
{
i="0" + i;
}
return i;
}
Ale když chci změnit jakýkoliv element, nebo styly, tak mi to nejde.
Máš to v celé uzavřené v $(function(){
});
?
Je možné, že když voláš kód, tak JQuery ještě není načtené.
Hádám, že v době, kdy se spustil tvůj skript, ještě nebyly načtené elementy, a tak žádné "h1" ještě neexistovalo. Máš 2 možnosti, jak spustit skript až po načtení HTML:
1. celý skript (nebo jen volání funkce "zmen()") dát do události DOM ready nebo window load.
Document ready:
// jQuery
function zmen()
{$("h1").css("color", "yellow");
}
$(document).ready(function() {
zmen();
});
// speciální zkrácený zápis v jQuery
$(function() {
zmen();
});
// prostý JavaScript
document.addEventListener('DOMContentLoaded', function() {
zmen();
}, false);
Window on load:
// jQuery
$(window).load(function() {
zmen();
});
// prostý JavaScrit
window.addEventListener("load", function() {
zmen();
}, false);
Rozdíl mezi události DOM ready a Window onload je ten, že DOM ready se zavolá hned, jakmile je dostupný HTML dokument (a je možné s ním dál manipulovat). Window onload se volá až když je načtená celá stránka.
2. vložit JavaScript pod HTML element (třeba na konec stránky). Tak se zavolá JavaScript až po načtení veškerého obsahu nad ním.
Mimochodem druhá ukázka funguje, protože se funkce "startTime" volá každých 500ms. Když poprvé není načtená stránka, nic neudělá, ale po 500ms se zavolá znovu a to už stránka načtená je. Proto ten skript funguje jak má.
Musíš ještě uzavřít závorky (funkce a volání metody load). http://jsfiddle.net/jFNTC/1/ Tady to funguje. Pokud ti to ani tak nejde, podívej se znovu do konzole, jestli tam náhodou není nějaký error. Případně to může ovlivňovat ještě CSS.
import jQuery knihovny
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
Zkoušel jsem tento odkaz a dokonce i ten z code.jquery webu, ale ani na jednom to nejde, takže problém nebude v tomhle
Pořád jsi neudělal to co ti psal Drahomír Hanák.
Koukni se do konzole + doplň ukončovací závorky .. ta fce má to být
takto
$(window).load(function() {
zmen();
});
Jinak, můžeš k časování využít ještě
setInterval(function(){
...
},1000); //milisekundy
Moc díky za opětovné upozornění, už to funguje:) Já jsem si všiml pouze těch složených závorek, na ty kulaté jsem zapomněl. Ještě jednou díky tobě i Drahomír Hanák .
Zobrazeno 21 zpráv z 21.