Avatar
done
Člen
Avatar
done:

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
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na done
Zdeněk Pavlátka:

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:

Chromium na Ubuntu, JS mám povolený.

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

zkoušel jsem to i na Mozille

 
Nahoru Odpovědět 2.11.2013 12:43
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na done
Drahomír Hanák:

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  +4 2.11.2013 12:49
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Drahomír Hanák
Zdeněk Pavlátka:

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

Nahoru Odpovědět  +1 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:

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:

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ý:

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:

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

 
Nahoru Odpovědět 2.11.2013 15:42
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na done
Drahomír Hanák:

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  +1 2.11.2013 15:43
Avatar
done
Člen
Avatar
done:

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
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na done
Drahomír Hanák:

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 2.11.2013 16:29
Avatar
done
Člen
Avatar
done:

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
Hammy350
Člen
Avatar
Hammy350:

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
Redaktor
Avatar
Odpovídá na done
Honza Bittner:

Pošli sem nový kód.

Btw. máš naimportovaný skript?

Nahoru Odpovědět 2.11.2013 18:20
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Avatar
done
Člen
Avatar
done:

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:

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
Redaktor
Avatar
Odpovídá na done
Honza Bittner:

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  +1 2.11.2013 18:36
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Avatar
Honza Bittner
Redaktor
Avatar
Odpovídá na done
Honza Bittner:

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

setInterval(function(){
...
},1000); //milisekundy
Nahoru Odpovědět 2.11.2013 18:37
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Avatar
done
Člen
Avatar
done:

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.