Autor Zpráva
okolojdouci
Profil *
Dělal jsem to už x-krát a teď mi to prostě nefunguje, nechápu proč.
Obsah JS:

var xmlhttp;

function delkruh(k)
{
  if (confirm("Opravdu smazat?"))
  {  
    xmlhttp=GetXmlHttpObject();
    if (xmlhttp==null)
    {
      alert ("Browser does not support HTTP Request");
      return;
    }
    var url="ajax.php";
    url=url+"?delx="+k;
    url=url+"&sid="+Math.random();

    xmlhttp.onreadystatechange=deldone;
    xmlhttp.open("GET",url,true);
    xmlhttp.send(null);
  }
}

function deldone()
{
  if (xmlhttp.readyState==4)
  {
    alert ("--");
    var kid = xmlhttp.responseText;
    alert (kid+"--");
  } 
}


To php proběhne, na jeho konci mám echo, které taky funguje, když to zkouším otevřít přímo. Ale do toho responseText se to nenačte. Proč, u všech škvarků? alert ("--") proběhne, ale ten kid je prázdný.
okolojdouci
Profil *
Tak to byla chuťovka.
Mám <tr> a ten má onclick, který má nějaké opodstatnění. V něm jsou samozřejmě buňky, v jedné z nich je obrázek s dalším onclick, který přes confirm má ten řádek smazat.

Vtip byl v tom, že se ty onclicky nějakým záhadným způsobem hádaly, v důsledku čehož mi xmlhttp nevrátil ten responseText, který do něj php dalo. Po zkušebním odstranění toho onclicku z <tr> ten druhý onclick jede bez problému.

Otázka zní: lze zařídit, když kliknu na obrázek v <tr><td>, aby se provedl jen onclick přiřazený obrázku a ne onclick zadaný pro ten <tr>?
Kcko
Profil
Probublávání?
okolojdouci
Profil *
Kcko:
Ten pojem jsem naposled potkal v souvislosti s třídícími algoritmy. Mohl bys mě nakopnout nějakým směrem?
Kcko
Profil
Můžeš dodat nejdřív nějakou ukázku, ať tu neplácám kraviny?
okolojdouci
Profil *
Kcko:
To by nebylo úplně jednoduchý a radši bych se bez toho obešel. Vypadá to prostě takhle:

      <tr id='r111' onclick="kruhdet('111', '1', '1')"><td>ahoj
          <span class='flvpravo'>
            <img src='images/delete.gif' onclick="delkruh('111')">
          </span></td>
      </tr>


Ten gif opravdu zabírá jen svých 12x12 px, span ho natěsno obklopuje.
Kcko
Profil
Pro starší verze IE to fungovat nebude, budeš muset použít nějaké rozlišení a window.event (viz Google).

Kdybys použil jQuery tak bych Ti funkční a kompatibilní kód vysekl ihned ( http://jquery.jslab.net/zkousecka/#fa73078785b2e735e2a5d3d5b966e3c7 )

Ještě určitě přispěchají "vládci" JS sekce, tak uvidíš co Ti poradí.


<table border="1">
   <tr id='r111' onclick="kruhdet('111', '1', '1')"><td>ahoj
          <span class='flvpravo'>
            <span onclick="delkruh('111', event); return false">SPAN</span>
          </span></td>
      </tr>
</table>





  function kruhdet()
  {
    alert("trko");
    
    
  }
  
  function delkruh(someContent, e){
    alert(someContent);
    e.stopPropagation();
    e.preventDefault();

  }

  
Chamurappi
Profil
Reaguji na okolojdouciho:
Předej si event v argumentu a zavolej event.cancelBubble = true.
okolojdouci
Profil *
Pánové, díky moc oběma. Šlape to jak má.

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