Autor Zpráva
Petr Ká
Profil *
Ahoj

Řeším problém s kalendářem akcí, kde při kliknutí na určitý den a je mu přiřazena "akce", zobrazí se "table" s akcemi pro daný den.. To je vše ok, ale řeším problém s tím, jak ho skrýt po kliknutí na jakýkoliv element v dokumentu (vyjma těch, obsažených uvnitř daného "table").

Schovávání mám prozatimně řešeno pomocí eventů týkajících se daného "table".. Jen tedy nevím jak to udělat tak, jak jsem popsal výše.

Děkuji za pomoc
Petr Ká
Profil
Vyřešeno... Ale přidám to sem, třeba se to bude hodit...

$(document.body).click(function() {
    if($('#muj_div').is(':visible'))
    {   
        $("#muj_div").hide();
    }
}); 


je potřeba mít jQuery...
Chamurappi
Profil
Reaguji na Petra Ká:
Bývá zvykem, že se rozklikávací věci zavírají už při onmousedown, ne až při hotovém kliku.

Značná část událostí probublává — dozvídá se o nich i rodič elementu, na němž k události došlo. Takže při otevření kalendáře…

A) … buď můžeš nastavit onmousedown na celý dokument a v něm vyhodnocovat, do čeho se kliká:
document.onmousedown = function(e)
{
  var event = e || window.event;
  var target = event.target || event.srcElement;
  while(target && target != obalKalendáře) target = target.parentNode;
  if(!target) zavřiKalendář();
};

B) … nebo při onmousedown na dokumentu zavřeš kalendář vždy a při kliknutí dovnitř kalendáře stornuješ probublání události:
document.onmousedown = function()
{
  zavřiKalendář();
};
obalKalendáře.onmousedown = function(e)
{
  var event = e || window.event;
  event.cancelBubble = true;
};

je potřeba mít jQuery...
Závisláku. I s jQuery to jde vyřešit lépe.
Petr Ká
Profil
Chamurappi:

Super, děkuji moc... Ještě menší dotaz : Když zobrazovanému elementu předávám zobrazované hodnoty přez TITLE="" , ignoruje html tagy.. Vše mám v pořádku, jen se místo Odkaz zobrazí

<a href="http://www.example.com" >Odkaz</a>
_es
Profil
Petr Ká:
hodnoty přez TITLE="" , ignoruje html tagy.
Title zobrazuje jednoduchý, nie formátovaný, text.
Petr Ká
Profil
To tedy znamena, ze mu musim hotnoty predat v nejakem stringu a pak si to prez split rozdelit ze? Nebo napadá jiné řešení ?
Petr Ká
Profil
Tak jsem to predelal na JSON...

nicméně, ve všech proměnných mám vše, tak jak má být a problém bude na řádku
 td.appendChild((outhtml));

urcite mi tam neco chybí, protože v proměnné outhtml mám vše správně, jen se mi to v "TD" nezobrazí

Celá část:
      var entries = titles[i].split('|||');
      tr=tbody.appendChild(document.createElement('tr'));
      td=tr.appendChild(document.createElement('td'));      
       $.get(
        ec3.myfiles+'/json.php',    { 
         id:  entries[0]
        }, 
        function(data) { 
          if (data.stav==1){           
            var outhtml = '<a href="'+data.link+'">'+entries[1]+'</a><br />';
            td.appendChild((outhtml));
          } else {
            return false;
          }
        }, 
        'json'
       ); 


edit
Není to "prasácké" řešení???
Kajman_
Profil *
Přes appendChild se přídávají nody (nové můžete vytvořit např přes createElement nebo createTextNode).

Vzhledem k tomu, že td je prázné, můžete dát např.
td.innerHTML=outhtml;
Petr Ká
Profil
Kajman:
Přes appendChild se přídávají nody (nové můžete vytvořit např přes createElement nebo createTextNode).
to jsem zkoušel následovně:
           var outhtml = document.createElement('<a href="'+data.link+'">'+entries[1]+'</a><br />');
            td.innerHTML(outhtml);


Pak jsem to ještě zkoušel jinak.. A to :
            var odkaz = document.CreateElement('a');
            odkaz.setAttribute('href', data.link);
            odkaz.appendChild(document.createTextNode(entries[1]));
            td.innerHTML(odkaz);


Ale ani jedna varianta se mi nechytá.

v data.link je URL odkazu
v entries[1] mám text odkazu

vše jsem si přez alerty ověřil..
Kajman_
Profil *
Petr Ká:
var odkaz = document.CreateElement('a');

Zkuste malé c.
Kajman_
Profil *
var outhtml = '<a href="'+data.link+'">'+entries[1]+'</a><br />'; 
td.innerHTML(outhtml);


var odkaz = document.createElement('a'); 
odkaz.setAttribute('href', data.link); 
odkaz.appendChild(document.createTextNode(entries[1])); 
td.appendChild(odkaz);
Petr Ká
Profil
Vyřešeno... Vše se delal zbytečně složitě :)))) JS se teprve učím no :)))

Takze kdyby to někdo řešil tak :

      var entries = titles[i].split('|||');
      tr=tbody.appendChild(document.createElement('tr'));
      td=tr.appendChild(document.createElement('td'));      
       $.get(
        ec3.myfiles+'/json.php',    { 
         id:  entries[0]
        }, 
        function(data) { 
          if (data.stav==1){           
            td.innerHTML=td.innerHTML+'<a href="'+data.link+'">'+entries[1]+'</a><br />';
          } else {
            return false;
          }
        }, 
        'json'
       );   

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