IT pro otrlé

O lidech, o vztazích, o politice, o názorech, o opicích a o ufonech.

Moderátor: Faskal

Odpovědět
Uživatelský avatar
OnGe
malý zelený křečopažout
Příspěvky: 13205
Registrován: 5. 2. 2010, 09:27
Kontaktovat uživatele:

Re: IT pro otrlé

Příspěvek od OnGe »

Nahoře máš "save" a pak zkopíruješ url
OnGe tu není, je tu jenom Zuul
Uživatelský avatar
Naoki
Příspěvky: 5466
Registrován: 2. 10. 2006, 21:04

Re: IT pro otrlé

Příspěvek od Naoki »

It is often the case that those who strongly advocate for social causes are driven less by a feeling of compassion towards the poor and weak, but more by a feeling of hate towards the rich and powerful.
Uživatelský avatar
OnGe
malý zelený křečopažout
Příspěvky: 13205
Registrován: 5. 2. 2010, 09:27
Kontaktovat uživatele:

Re: IT pro otrlé

Příspěvek od OnGe »

Jak tak na to koukám, nemáš tam nalinkované jquery. Bez jquery nemůžeš psát jquery. Upravil jsem fiddle: https://jsfiddle.net/wn5f6xaj/1/
Aby bylo vidět, že to něco dělá, tak se to tam přehazuje na 28 místo 280 pixelech.
OnGe tu není, je tu jenom Zuul
Uživatelský avatar
York
Příspěvky: 17447
Registrován: 24. 2. 2012, 17:31

Re: IT pro otrlé

Příspěvek od York »

Malá rejpavá poznámka (ok, víc poznámek).

Tohle:

Kód: Vybrat vše

if ($(window).scrollTop() > 28) ...
if ($(window).scrollTop() < 29) ...
Je lehce obfuscovanej kód - nutí to se zastavit a zamyslet, co tím vlastně básník chtěl říct.

V prvé řadě scrollTop() není integer, ale float, takže to může bejt klidně 28.39 nebo tak něco. Kód zafunguje, vleze to prostě do druhé větve, ale není to intuitivní. Když chci pokrýt všechna čísla, tak je lepší napsat něco jako:

Kód: Vybrat vše

if (cosi > x) ...
if (cosi <= x) ....
A to teda taky není úplně ideální, protože až to bude někdo upravovat, tak se mu snadno může stát, že přepíše třeba tu druhou podmínku a ne tu první - a bude se divit, proč to nedělá, co chce.

Ideální je to teda takhle:

Kód: Vybrat vše

if (cosi > x)
{
}
else
{
}
Z toho je fakt jasně vidět, že to má pokrýt všechny možné hodnoty.



Další věc: Vždycky je lepší nepoužívat natvrdo zadané konstanty. Místo '280' bych tam dal výšku toho menu baru, nebo pozici, nebo co že to těch 280 představuje. Výhoda je, že když si pak přeskládáš html, tak ti to bude fungovat i bez přepisování konstanty.

A ještě k té konstantě: Když už musíš použít konstantu, tak je dobrý nepsat do kódu přímo číslo, ale založit na to proměnnou a nějak rozumně ji pojmenovat. Např.:

Kód: Vybrat vše

const MENU_BAR_POSITION = 280;

if ($(window).scrollTop() > MENU_BAR_POSITION)
{
}
else
{
}
Díky tomu je pak hned vidět, co to číslo znamená.
Naposledy upravil(a) York dne 10. 1. 2019, 12:47, celkem upraveno 2 x.
Uživatelský avatar
York
Příspěvky: 17447
Registrován: 24. 2. 2012, 17:31

Re: IT pro otrlé

Příspěvek od York »

Pak bych ještě doporučil dát těm divům idčka a adresovat je přes ně.

Tohle:

Kód: Vybrat vše

$('.navbar')
Totiž vyhledá v dokumentu všechny elementy, které mají css class 'navbar'. Takže když tam těch navbarů budeš mít víc, všechny najednou ti budou skákat nahoru (a nevšimneš si toho, protože se budou překreslovat přes sebe).


A doporučuju jako cvičení, zkusit si to celé přepsat bez jquery - poslední dobou se začínají množit doporučení přestat ji používat, takže je fajn vědět, jak to samý udělat v plain javascriptu.


PS: OnGe, imho by Naokimu docela pomohlo, kdybys popsal, jak jsi to debugoval (nebo to bylo jen tou chybějící jquery?).
Uživatelský avatar
OnGe
malý zelený křečopažout
Příspěvky: 13205
Registrován: 5. 2. 2010, 09:27
Kontaktovat uživatele:

Re: IT pro otrlé

Příspěvek od OnGe »

Rozdělil jsem to, aby se to dalo vyznat a koukám, že tam není jquery. Žádnej velkej kyberpunk se neudál :)
OnGe tu není, je tu jenom Zuul
Uživatelský avatar
York
Příspěvky: 17447
Registrován: 24. 2. 2012, 17:31

Re: IT pro otrlé

Příspěvek od York »

OnGe píše: 10. 1. 2019, 12:48 Rozdělil jsem to, aby se to dalo vyznat a koukám, že tam není jquery. Žádnej velkej kyberpunk se neudál :)
Aha, jasně.


Naoki: Když si v té tvojí verzi otevřeš degugovací tooly (v chromu je to ctrl+shift+j), tak v konzoli uvidíš tuhle hlášku:

Kód: Vybrat vše

Uncaught ReferenceError: $ is not defined
    at VM19:47
'$' je funkce jquery (jako že je to funkce, která se jmenuje '$'). Používá se (hlavně) na selektování DOM elementů.


edit: Obecně když děláš cokoliv v prohlížeči, tak je dobrý mít při tom otevřenou debugovací konzoli, protože tam se vypisujou všechny errory. Můžeš si tam taky vypisovat vlastní ladící hlášky přes console.log(...);
Uživatelský avatar
Naoki
Příspěvky: 5466
Registrován: 2. 10. 2006, 21:04

Re: IT pro otrlé

Příspěvek od Naoki »

Díky za rady.
Na jsfiddle vidím jak to funguje, tak jsem zkusil do vlastního codu dát do script tagu src="https://ajax.googleapis.com/ajax/libs/j ... ery.min.js" ale když to otevřu jako html tak stále nic...
Console mi hodil tento error, ale nevím jestli to s tím souvisí: HTTP-Based Public Key Pinning is deprecated. Chrome 69 and later will ignore HPKP response headers. (Host: c1.staticflickr.com)
It is often the case that those who strongly advocate for social causes are driven less by a feeling of compassion towards the poor and weak, but more by a feeling of hate towards the rich and powerful.
Uživatelský avatar
OnGe
malý zelený křečopažout
Příspěvky: 13205
Registrován: 5. 2. 2010, 09:27
Kontaktovat uživatele:

Re: IT pro otrlé

Příspěvek od OnGe »

Nedával jsi to k tomu scriptu, co v něm máš napsaný ten svůj kód? Protože to by pak nefungovalo. To musí být další tag, tj. buď tam máš src, nebo nějaký kód, ale ne obojí dohromady. Mělo by to vypadat takhle:
https://developers.google.com/speed/libraries/#jquery

Jinak bych taky doporučil linkovat nejaktuálnější verzi, pokud není důvod použít starší.
OnGe tu není, je tu jenom Zuul
Uživatelský avatar
Naoki
Příspěvky: 5466
Registrován: 2. 10. 2006, 21:04

Re: IT pro otrlé

Příspěvek od Naoki »

Script oblast mám napsanou takto, nic jiného jsem nezměnil:

Kód: Vybrat vše

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
$(document).ready(function() {
  
  $(window).scroll(function () {
      //if you hard code, then use console
      //.log to determine when you want the 
      //nav bar to stick.  
      console.log($(window).scrollTop())
    if ($(window).scrollTop() > 280) { /* if scroll down stick on top */
      $('.navbar').addClass('sticky');
    }
    if ($(window).scrollTop() < 281) { /* at page opening don't stick, but flow with page */
      $('.navbar').removeClass('sticky');
    }
  });
});

</script>
It is often the case that those who strongly advocate for social causes are driven less by a feeling of compassion towards the poor and weak, but more by a feeling of hate towards the rich and powerful.
Uživatelský avatar
OnGe
malý zelený křečopažout
Příspěvky: 13205
Registrován: 5. 2. 2010, 09:27
Kontaktovat uživatele:

Re: IT pro otrlé

Příspěvek od OnGe »

No a takhle je to blbě. Když tam máš src, nemůžeš v tom mít kód, protože ten se ti natahuje z toho src. Takže by to mělo vypadat nějak takhle:

Kód: Vybrat vše

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js" />
<script>
$(document).ready(function() {
  
  $(window).scroll(function () {
      //if you hard code, then use console
      //.log to determine when you want the 
      //nav bar to stick.  
      console.log($(window).scrollTop())
    if ($(window).scrollTop() > 280) { /* if scroll down stick on top */
      $('.navbar').addClass('sticky');
    }
    if ($(window).scrollTop() < 281) { /* at page opening don't stick, but flow with page */
      $('.navbar').removeClass('sticky');
    }
  });
});

</script>
OnGe tu není, je tu jenom Zuul
Uživatelský avatar
Naoki
Příspěvky: 5466
Registrován: 2. 10. 2006, 21:04

Re: IT pro otrlé

Příspěvek od Naoki »

Rozumím.

No mám to teď přesně takto a stejně nic... udělal jsem i copy paste toho codu abych se ujistil že to mám správně. Jsem z toho jelen.
It is often the case that those who strongly advocate for social causes are driven less by a feeling of compassion towards the poor and weak, but more by a feeling of hate towards the rich and powerful.
Uživatelský avatar
OnGe
malý zelený křečopažout
Příspěvky: 13205
Registrován: 5. 2. 2010, 09:27
Kontaktovat uživatele:

Re: IT pro otrlé

Příspěvek od OnGe »

Hoď to na fiddle, takhle zase věštíme z koule.
OnGe tu není, je tu jenom Zuul
Uživatelský avatar
York
Příspěvky: 17447
Registrován: 24. 2. 2012, 17:31

Re: IT pro otrlé

Příspěvek od York »

Naoki píše: 13. 1. 2019, 07:42No mám to teď přesně takto a stejně nic... udělal jsem i copy paste toho codu abych se ujistil že to mám správně.
Co říká konzole?

Naoki píše: 13. 1. 2019, 07:42Jsem z toho jelen.
I jeleni musí includnout jquery, když ji chtějí používat ;-)
Uživatelský avatar
Naoki
Příspěvky: 5466
Registrován: 2. 10. 2006, 21:04

Re: IT pro otrlé

Příspěvek od Naoki »

https://jsfiddle.net/Lgjtuck0/

Console říká: HTTP-Based Public Key Pinning is deprecated. Chrome 69 and later will ignore HPKP response headers. (Host: c1.staticflickr.com)
It is often the case that those who strongly advocate for social causes are driven less by a feeling of compassion towards the poor and weak, but more by a feeling of hate towards the rich and powerful.
Odpovědět

Zpět na „Realita a pseudorealita“

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 8 hostů