Autor Zpráva

Profil *
Zdravíčko používám jQuery a z něj .css; jedná se o web kam se nahraje obrázek a já potřebuji nastavit výšku a šířku divu právě podle velikosti obrázku prozatím mne napadl tento kód

var img = "<? echo $lol; ?>"; // předtím se do proměnné lol přijme proměná ze session
var docasna ='localhost/mk/up/example';
$("#uzobr").attr("src", "./uploads/"+img);
var obrazek = document.getElementById('#uzobr');

$('#draggable').css("width",obrazek.width);
$('#draggable').css("height",obrazek.height);


avšak ty poslední tři řádky jsou nefunkční.. :( poradí prosím někdo?
Kajman_
Profil *
Nestačí přidat k velikostem jednotky px?

Profil *
Kajman: To mne nenapadlo... :-) avšak po změně na

$('#draggable').css("width",obrazek.width+"px");
$('#draggable').css("height",obrazek.height+"px");

se to chová stále stejně :(
Kajman_
Profil *
Při document.getElementById máte před id navíc mřížku, která tam nepatří.

Profil *
...bohužel stále nic
Kajman_
Profil *
Vytvořte živou ukázku.
Kajman_
Profil *
Další problém může být v tom, že ve chvíli, kdy koukáte na velikost obrázku, ještě není obrázek načtený, tak jsou velikosti neznámé.
var obrazek = document.getElementById('uzobr');
obrazek.onload=function()
     {
         $('#draggable').css(
                              {"width":obrazek.width,
                               "height":obrazek.height}
                             );
     };
obrazek.src="./uploads/"+img;
1Pupik1989
Profil
Pokud se skript načte dříve než obrázek, pak to je jasné, čili by to mělo vypadat cca. To zapříčiní, že skript se spustí po načtení stránky.

$(function(){
var img = "<?=$lol; ?>"; // předtím se do proměnné lol přijme proměná ze session 
$("#uzobr").attr("src", "./uploads/"+img); 
var obrazek = $("#uzobr"); 
$('#draggable').css({"width": obrazek.width()+"px", "height": ,obrazek.height()+"px"});
});


Pokud máte JQuery, pak výběr obrázku stylem "document.getElementById()" je zbytečný, stačí načítat stejně jako "draggable". Obalte to podmínko "$(function(){});" a musí to jít. Zápis css() je také zbytečně zdlouhavý, píše se "css({attribut: hodnota, attribut2: hodnota2});"
Kajman_
Profil *
1Pupik1989:
Ale po načtení stránky se teprve zadá nová cesta toho obrázku. Takže stále obrázek nebude v té chvíli k dispozici.
1Pupik1989
Profil
var obrazek = document.getElementById('uzobr');

Toto znamená, že se při načítání javascriptu hledá element z ID rovnající se "uzobr". Pokud tam tedy není, hodí to false a celé "obrazek.onload" je k ničemu. A poslední by mě zajímalo jak se ten obrázek generuje, když po načtení stránky tam není? To je v kódu akorát "<img id='uzobr'> ?
Kajman_
Profil *
1Pupik1989:
A poslední by mě zajímalo jak se ten obrázek generuje, když po načtení stránky tam není?
Proto jsem žádal o tu živou ukázku.

Težko říct, jestli img dříve vygeneruje díky js, má ho bez src nebo tam má jiný src. Každopádně ho mění až ukázaným skriptem, tak to může chvíli trvat, než budou správné velikosti k dispozici. Šla by i kombinace obojího... onload na obrázku nastavit až po načtení stránky a pak teprve měnit src. Ale pokud je daný img již v kódu před tím kouskem js, tak není potřeba čekat.
1Pupik1989
Profil
Moje konečné řešení (pokud nebudu vědět více:
$(function () {
  var img = new Image();
  $(img).attr("src", "./uploads/<?=$lol?>").load(function () {
      $('#draggable').html(this).css({"width":this.width+"px", "height":this.height+"px"});
    });
});

Profil *
Živá ukázka
Kajman_
Profil *
:
A když použijete nastavení velikostí při onload události obrázku, jak je ukázáno v [#7] nebo [#12]?

Profil *
Kajman:
Když použiji kód, který poslal 1Pupik1989 tak to funguje... Moc Vám všem děkuji za pomoc... Mohl by mi někdo prosím ještě přiblížit, proč to takto funguje a proč předtím ne?
Kajman_
Profil *
:
Mohl by mi někdo prosím ještě přiblížit, proč to takto funguje a proč předtím ne?
Však se tak již stalo, stačí číst.
1Pupik1989
Profil
: Předtím si zjišťoval výšku a šířku u elementu, který byl napsaný někde v HTML kódu. Kdežto u mého kódu se obrázek vytvoří v javascriptu a ze zdroje zjistí velikost.

Profil *
1Pupik1989: aha, díky moc ! :)

a ještě poslední dotaz i když asi OT - pokud se chci naučit s jQ jakou literaturu by jste mi doporučili?
1Pupik1989
Profil
Docela mi pomohlo Toto, narazil jsem na tu stránku náhodou tady na fóru a našel jsem vše, co jsem potřeboval.

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:

0