NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
IT rekvalifikace s podporou uplatnění. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!

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.

Aktivity
Avatar
done
Člen
Avatar
done:2.11.2013 12:34

Ahoj, mohl by mi někdo pomoci: nefunguje mi JS na webových stránkách, kterém jenom testuji, JS mám povolený, ale přesto mi nefungují funkce pro manipulaci s DOM. Používám jQuery, mám jí v hlavičce dokumentu nastavenou.
Jediné co mi tedy šlo bylo klasický alert, když se mi načetl dokument, ale i když zkouším vyvolat funkci na nějakou událost, tak mi to nejde.
Mohl by mi někdo prosím poradit, kde by mohla být chyba ?

 
Odpovědět
2.11.2013 12:34
Avatar
Odpovídá na done
Zdeněk Pavlátka:2.11.2013 12:38

Co používáš za prohlížeč?

Nahoru Odpovědět
2.11.2013 12:38
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
done
Člen
Avatar
done:2.11.2013 12:39

Chromium na Ubuntu, JS mám povolený.

 
Nahoru Odpovědět
2.11.2013 12:39
Avatar
done
Člen
Avatar
done:2.11.2013 12:43

zkoušel jsem to i na Mozille

 
Nahoru Odpovědět
2.11.2013 12:43
Avatar
Odpovídá na done
Drahomír Hanák:2.11.2013 12:49

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í.

 
Nahoru Odpovědět
2.11.2013 12:49
Avatar
Odpovídá na Drahomír Hanák
Zdeněk Pavlátka:2.11.2013 13:37

Ta konzole jde otevřít i přes F12.

Nahoru Odpovědět
2.11.2013 13:37
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
done
Člen
Avatar
Odpovídá na Drahomír Hanák
done:2.11.2013 15:23

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í.

 
Nahoru Odpovědět
2.11.2013 15:23
Avatar
done
Člen
Avatar
done:2.11.2013 15:27

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.

Editováno 2.11.2013 15:27
 
Nahoru Odpovědět
2.11.2013 15:27
Avatar
Odpovídá na done
Michael Olšavský:2.11.2013 15:36

Máš to v celé uzavřené v $(function(){

});
?
Je možné, že když voláš kód, tak JQuery ještě není načtené.

 
Nahoru Odpovědět
2.11.2013 15:36
Avatar
done
Člen
Avatar
done:2.11.2013 15:42

zkoušel jsem $(document).ready ale přes to to taky nejde

 
Nahoru Odpovědět
2.11.2013 15:42
Avatar
Odpovídá na done
Drahomír Hanák:2.11.2013 15:43

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á.

 
Nahoru Odpovědět
2.11.2013 15:43
Avatar
done
Člen
Avatar
done:2.11.2013 15:50

Ani tohle mi nejde.

function zmen()
 {$("p").css("color", "yellow");
}
$(window).load(function() {
  zmen();

Nevím, jestli může být i problém v HTML dokumentu, je to možné ?

 
Nahoru Odpovědět
2.11.2013 15:50
Avatar
Odpovídá na done
Drahomír Hanák:2.11.2013 16:29

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.

 
Nahoru Odpovědět
2.11.2013 16:29
Avatar
done
Člen
Avatar
done:2.11.2013 18:11

Stále mi to nefunguje, asi to bude něčím v HTML, pokusím se na to přijít.
Nemůže to být něčím v hlavičce dokumentu ? Nevíte o něčem, co by to mohlo ovlivnit ?

 
Nahoru Odpovědět
2.11.2013 18:11
Avatar

Člen
Avatar
:2.11.2013 18:18

Vidím, že ti nefunguje pouze jQuery, takže by sis měl zkontrolovat, zda ho máš správně spuštěný (velmi jednoduše se může stát, že jsi udělal nějaký malý překlep, který to celé pokazil)

EDIT: Omg zase jsem zapomněl zmáčknout "odpovědět" :D

Editováno 2.11.2013 18:18
 
Nahoru Odpovědět
2.11.2013 18:18
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovídá na done
Honza Bittner:2.11.2013 18:20

Pošli sem nový kód.

Btw. máš naimportovaný skript?

Nahoru Odpovědět
2.11.2013 18:20
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
done
Člen
Avatar
done:2.11.2013 18:22

jj, mám naimportovaný skript, jeden, který je na čas , tak ten mi funguje.

proč jiný kód ?
pořád mi nefunguje ani toto

function zmen()
  {$("p").css("color", "yellow");
 }
 $(window).load(function() {
   zmen();}
 
Nahoru Odpovědět
2.11.2013 18:22
Avatar
done
Člen
Avatar
done:2.11.2013 18:25

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

Editováno 2.11.2013 18:26
 
Nahoru Odpovědět
2.11.2013 18:25
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovídá na done
Honza Bittner:2.11.2013 18:36

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(fun­ction() {
zmen();
});

Nahoru Odpovědět
2.11.2013 18:36
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovídá na done
Honza Bittner:2.11.2013 18:37

Jinak, můžeš k časování využít ještě

setInterval(function(){
...
},1000); //milisekundy
Nahoru Odpovědět
2.11.2013 18:37
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
done
Člen
Avatar
done:2.11.2013 18:39

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 .

Editováno 2.11.2013 18:39
 
Nahoru Odpovědět
2.11.2013 18:39
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 21 zpráv z 21.