Autor Zpráva
Duchaplny
Profil
Zdravím,

snažím sa rozbehnúť tento Script, ktorý na tejto stránke funguje, ale doma na mojom PC nie.

JavaScript mám v prehliadači povolený. Bolo mi povedané, že tento script je písaný v jQuery, tak som pridal link na jQuery:
 <script data-require="jquery" data-semver="2.0.3" src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
ale bez výsledku. Naozaj netuším, kde by mohla byť chyba. JavaScript ani jQuery neovládam, takže možno je to len drobnosť.

Tu je celý kód, ako som to skúšal rozbehnúť..

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Test</title>
    <script data-require="jquery" data-semver="2.0.3" src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
<script type="text/javascript">
    $('.picker').on('click', function() {
      $('.content .active').removeClass('active');
      $('.content li').eq($(this).val() - 1).addClass('active');
    });
</script>

<style type="text/css">
.content li { display: none; }
.content li.active { display: block; }
</style>
  </head>

  <body>
    <input type="radio" name="picker" class="picker" value="1"/>
    <input type="radio" name="picker" class="picker" value="2"/>
    <input type="radio" name="picker" class="picker" value="3"/>

    <ul class="content">
      <li>foo1</li>
      <li>foo2</li>
      <li>foo3</li>
    </ul>

  </body>
</html>
juriad
Profil
Použij jQuery verze 1. Verzi 2 nepoužívej:

jQuery 2.x has the same API as jQuery 1.x, but does not support Internet Explorer 6, 7, or 8. All the notes in the jQuery 1.9 Upgrade Guide apply here as well. Since IE 6/7/8 are still relatively common, we recommend using the 1.x version unless you are certain no IE 6/7/8 users are visiting the site. Please read the 2.0 release notes carefully.

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
Duchaplny
Profil
nepoužívam IE, ale aj tak mi zmena jQuery nepomohla. Skúšal som IE, Operu, Mozillu aj Chrome a nič, akurát mi to dlhšie načítava.
margin
Profil *
http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js
http://code.jquery.com/jquery-1.10.2.min.js
Nebo ji jQuery stáhni k sobě a dej tam relativní cestu.
Pokud bys to měl na internetu, tak by ti to se dvěmi lomítky na začátku fungovalo (pro běžné použití nedoporučuji)
Lomítka a tečky v adresách souborů » Lomítko

Oproti originálu máš jiný skript, a nemám tím na mysli tanečky s CDATA, ale opravdu skript.
Duchaplny
Profil
ako hovorím, skúšal som aj iné jQuery linky a tiež nefungovali, chyba musí byť niekde inde. Tiež som písal, že sa v tom nevyznám, takže netuším čo je CDATA, ale script je presne ten istý (ctrl+c a ctrl+v), len je tam pridaných pár HTML tagov.. skúšal som to aj priamo na servery, proste to nefunguje a netuším prečo.. sťahovať jQuery nechcem, musí to ísť online..

edit: viem ako fungujú lomítka, dal som pred ne "http:"
edit2: keby náhodou niekto vedel ten kód prepísať, aby nevyužíval jQuery a fungoval bez problémov, bol by som mu vďačný, bo s týmto sa babrem už pekných pár hodín a stále to nefunguje..
8vm8
Profil
Zkus si jQuery stáhnout.
margin
Profil *
Duchaplny:
ale script je presne ten istý (ctrl+c a ctrl+v)
Tak je problém v tom, že skript nekopíruješ z okna (IFRAME) Result, ale z DIVu, kam se vkládá JS kód.
http://fiddle.jshell.net/9SdvZ/show/
Pokud si celý kód zkopíruješ, nezapomeň upravit cestu k jQuery, aby fungoval kód na disku, musí začínat na http://, nikoliv jen dvěmi lomítky.
Výsledek v okně Result se liší podle jsfiddle volby v roletce začínající volbou OnLoad.

8vm8:
V tom nebude problém, chyba bude s největší pravděpodobnosti v tom, co jsem napsal v tomto příspěvku.
Duchaplny
Profil
margin:
jop chyba bola v tom CDATA, vôbec netuším čo to je, ale už to funguje, ďakujem.. teraz ten script vyzerá takto:

<script type='text/javascript'>//<![CDATA[ 
$(window).load(function(){
    $('.picker').on('click', function() {
      $('.content .active').removeClass('active');
      $('.content li').eq($(this).val() - 1).addClass('active');
    });
});//]]>  
</script>
margin
Profil *
Chyba nebyla v CDATA.
Tvůj původní skript z [#1]:
<script type="text/javascript">
    $('.picker').on('click', function() {
      $('.content .active').removeClass('active');
      $('.content li').eq($(this).val() - 1).addClass('active');
    });
</script>

Tvůj nynější skript [#4], pokud ho zbavím CDATA, bude taky fungovat.
<script type='text/javascript'>
$(window).load(function(){
    $('.picker').on('click', function() {
      $('.content .active').removeClass('active');
      $('.content li').eq($(this).val() - 1).addClass('active');
    });
});
</script>
Takže skript jsi na stránce měl, ale nebyl spuštěný, vůbec jsi tam neměl $(window).load(function(){, na což jsem upozorňoval už v [#4].

K čemu je CDATA, se dočteš třeba v článku http://atd.havrlant.net/jak-na-dokonale-xhtml
Ty skript do CDATA zavírat nepotřebuješ, protože neprovozuješ XHTML, ale HTML.
Duchaplny
Profil
hej hej máš pravdu, neštudoval som ten link, po 5tich hodinách som bol rád, že funguje.. inak ja píšem v XHTML a zatiaľ vždy 100% validné stránky, takže to CDATA sa bude hodiť a ešte raz ďakujem..
Chamurappi
Profil
Reaguji na Duchaplnyho:
keby náhodou niekto vedel ten kód prepísať, aby nevyužíval jQuery a fungoval bez problémov
Kdyby bylo cílem, aby nefungoval v Internet Exploreru 8, šlo by to napsat úplně bez JavaScriptu.
Bez jQuery by šlo napsat třeba nějak takhle:
<style>
.content li { display: none; }
.content li.active { display: block; }
</style>
<form name="pickers">
  <input type="radio" name="picker" value="1">
  <input type="radio" name="picker" value="2">
  <input type="radio" name="picker" value="3">
</form>
<script>
  var active = null;
  for(var i = 0, picker; picker = document.pickers.picker[i]; i++)
    picker.onclick = function()
    {
      if(active) active.className = "";
      active = document.getElementById("content-" + this.value);
      active.className = "active";
    };
</script>

<ul class="content">
  <li id="content-1">foo1</li>
  <li id="content-2">foo2</li>
  <li id="content-3">foo3</li>
</ul>

inak ja píšem v XHTML a zatiaľ vždy 100% validné stránky
Pochybuju. Pokud používáš MIME typ text/html, je chybou nahlížet na tvůj kód nahlížet jako na XHTML (jen kvůli deklaraci <!doctype>). Žádný prohlížeč to nedělá, všichni ho berou jako HTML a veškeré rozdíly (včetně CDATA sekcí uvnitř <script>ů) jsou nadbytečný balast.
Duchaplny
Profil
Chamurappi:
„inak ja píšem v XHTML a zatiaľ vždy 100% validné stránky“
Pochybuju.

Toto bola ukážka, aby bola pochopená problematika.. narýchlo som skopíroval html kód, ktorý mi vygenerovala táto stránka, kde som skúšal rozbehnúť podobný script, a vôbec som neriešil, či je stránka validná. Keď idem robiť stránky, tak si dám záležať.

„Bez jQuery by šlo napsat třeba nějak takhle“
Ďakujem, je to super.
Chamurappi
Profil
Reaguji na Duchaplnyho:
Keď idem robiť stránky, tak si dám záležať.
Projdou mým validátorem? Netvrdím, že by validita byla důležitá, ale ty pravděpodobně věříš, že nějaký význam má a že <!doctype> rozhoduje o tom, zda se na stránku nahlíží jako na HTML nebo na XHTML, což dělá jen oficiální validátor, nikoliv prohlížeče. Takže uvádění CDATA je ztráta času.
Duchaplny
Profil
Chamurappi:
cez W3C validator prejdu na 100 %, tvoj validator mi hlási 80 chýb a 18 varovaní, však nie je to taký problém napraviť, len robota navyše.. validujem ich hlavne pre dobrý pocit a väčšinou až sú kompletne hotové, aj keď na tom v podstate záležať nemusí.. len dnes som začal čítať a učiť sa JavaScript, tak hádam v blízkej budúcnosti pochopím, čo s tým CDATA stále máš.. ten tvoj validator začnem používať, aspoň pochytím niečo užitočné do budúcnosti..

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: