Autor Zpráva
HGD
Profil
newim jak to napsat, je to snad jediná chyba kterou mam ve scriptu :-D
Používam to jako AJAX a potřeboval bych aby se mi vypsal obsah a ne proměnná
' <a onClick="obrazekHTTP(\'files[i].firstChild.nodeValue\',\'folderSend[i].firstChild.nodeValue\')">'+files[i].firstChild.nodeValue+'</a><br>'


Díky za rady, já už sem z toho na prášky
Chamurappi
Profil
Reaguji na HGD:
Když umíš vepsat řetězec jako obsah elementu <a>, proč to neuděláš stejně i u atributu? Nezáleží na tom, jestli a jak používáš AJAX, máš tam začátečnickou logickou chybu. Jestli chceš, aby se v nějakém řetězci objevoval obsah proměnné místo jejího názvu, tak nesmíš dávat ten název do uvozovek, musíš spojit samotné řetězce.

Takže:
' <a onClick="obrazekHTTP(\'' + files[i].firstChild.nodeValue + '\',\'' + folderSend[i].firstChild.nodeValue + '\')">'+files[i].firstChild.nodeValue+'</a><br>'
Ještě bys měl ošetřit, aby se uvnitř vkládaných textů neobjevily apostrofy či uvozovky, protože ty by ti mohly ukončit řetězec nebo atribut.

Na podobné úkony je mnohem výhodnější užívat metody DOMu. Element vyrobíš pomocí document.createElement("a"), strčíš ho do dokumentu pomocí rodič.appendChild, nastavíš mu odkaz.onclick = function() { … } a nemusíš se starat o uvozovkový mišmaš.
HGD
Profil
děkuju za ty uvozovky, ale ten zbytek sice vypadá krásně, ale pro mě je to španělská vesnice, vůbec nechňápu. Kdyby bylo vysvětlení...díky
Chamurappi
Profil
Reaguji na HGD:
ale pro mě je to španělská vesnice, vůbec nechňápu
Když si dám tu práci a vysoukám ze sebe teoreticky přesné a formálně výstižné vysvětlení, pochňápeš to z něj?
Jestli chceš názorné vysvětlení popsaného postupu, ukaž, o co se snažíš, dej sem odkaz na to, co zatím máš, uvidíme, co s tím půjde udělat.
HGD
Profil
je to jen část kódu, ale v první funkci se vypisují soubory z adresáře + ikona podle typu
function vyberFolder(httpRequest){
  
  if(httpRequest.readyState==4){
  // - odpověd přijata vpořádku
    if(httpRequest.status==200){
    // - vše v pořádku
      var files=httpRequest.responseXML.getElementsByTagName('soubor');
      var typ=httpRequest.responseXML.getElementsByTagName('typ');
      var folderSend=httpRequest.responseXML.getElementsByTagName('slozka');
      var ikona;
      document.getElementById('vypis_souboru').innerHTML="";
      
      for(var i=0; i<=files.length; i++){
       switch(typ[i].firstChild.nodeValue){
        case 'jpg' : ikona='<img alt="JPG" src="style/jpg.gif">'; break;
        case 'jpeg' : ikona='<img alt="JPEG" src="style/jpg.gif">'; break;
        case 'png' : ikona='<img alt="PNG" src="style/png.gif">'; break;
        case 'gif' : ikona='<img alt="GIF" src="style/gif.gif">'; break;
       }
       document.getElementById('vypis_souboru').innerHTML+=ikona+ ' <a onClick="obrazekHTTP(\''+files[i].firstChild.nodeValue+'\',\''+folderS end[i].firstChild.nodeValue+'\')">'+files[i].firstChild.nodeValue+'</a ><br>';
      }

    }else{
    // - stránka nenalezena, popř. jiná chyba
        alert("Chyba pri nacitani stanky "+ httpRequest.status +":"+ httpRequest.statusText);
     }
  }else{
   // - nepřipravená odpoved
   }
};


a odesílá se sem, přes tuhle funkci se pak načítají informace o souboru a miniatura a tak
function obrazekHTTP(img,folder){
  var httpRequest;
  var url='info.php?obrazek='+img+'&slozka='+folder;

  if (window.XMLHttpRequest) { // Mozilla, Safari, Opera, Konqueror, ...
    httpRequest = new XMLHttpRequest();
    if(httpRequest.overrideMimeType){
       httpRequest.overrideMimeType('text/xml');
    }
  } else if (window.ActiveXObject) { // Internet Explorer
    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
  }
  
  httpRequest.open('GET',url,true);
  httpRequest.onreadystatechange = function (){vyberImg(httpRequest)};
  httpRequest.send(null);
};
peta
Profil
— Moderátor (Ch): Máš zakázáno komentovat moderátorské zákroky a vyjadřovat se ve vyřešených vláknech. —
Chamurappi
Profil
Reaguji na HGD:
function vyberFolder(httpRequest){

  if(httpRequest.readyState == 4){
  // - odpověd přijata vpořádku
    if(httpRequest.status == 200){
    // - vše v pořádku
      var files = httpRequest.responseXML.getElementsByTagName('soubor');
      var typ = httpRequest.responseXML.getElementsByTagName('typ');
      var folderSend = httpRequest.responseXML.getElementsByTagName('slozka');
      var ikona;
      var vypis = document.getElementById('vypis_souboru');
      vypis.innerHTML = "";
      
      for(var i = 0; i <= files.length; i++){
        var pripona = typ[i].firstChild.nodeValue;
        var img = document.createElement("img");  // výroba elementu <img>
        img.alt = pripona.toUpperCase();
        img.src = "style/" + {"jpg": "jpg", "jpeg": "jpg", "png": "png", "gif": "gif"}[pripona] + ".gif";
        vypis.appendChild(img);  // začlenění <img> do elementu s id="vypis_souboru"
        var a = document.createElement("a");  // výroba elementu <a>
        a.appendChild(document.createTextNode(files[i].firstChild.nodeValue));  // doplnění textu do <a>
        (function(i) {
          a.onclick = function() {
            obrazekHTTP(files[i].firstChild.nodeValue, folderSend[i].firstChild.nodeValue);
          };
        })(i);  // tohle bude asi těžší na pochopení, viz povídání o closure
        vypis.appendChild(a);  // začlenění <a> do elementu s výpisem
        var br = document.createElement("br");
        vypis.appendChild(br);
      }
    }else{
    // - stránka nenalezena, popř. jiná chyba
        alert("Chyba pri nacitani stanky " + httpRequest.status + ":" + httpRequest.statusText);
     }
  }else{
   // - nepřipravená odpoved
   }
};
Tento kód jsem sesmolil teď a tady do formuláře, nezkoušel jsem ho, možná bude hlásit nějakou chybu, ale je to krok správným směrem.
HGD
Profil
bude asi problem v jazyce, protože anglicky neumim, nicméně moc děkuji, funguje bezchybně

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