Autor Zpráva
HGD
Profil
nechápu to, ale když napíšu :
var obsah = document.getElementById('vypis_souboru').innerHTML;
tak výsledek pak nefunguje -> obsah = '<a href="" onClick="">'+files[i].firstChild.nodeValue+'</a>'; ale když napíšu document.getElementById('vypis_souboru').innerHTML = '<a href="" onClick="">'+files[i].firstChild.nodeValue+'</a>';, tak to funguje bez problémů
pmg
Profil
Předávat referencí se dají jen některé objekty. Všechny primitivní typy (pole, čísla, řetězce, logické hodnoty) se při přizazení do proměnné kopírují. Přiřazením vlastnosti innerHTML (což je řetězec) se tedy ztrácí její propojení s původním elementem.

Do proměnné bys mohl přiřadit maximálně ten vypis_souboru (to je element).

var vypis = document.getElementById('vypis_souboru');
vypis.innerHTML = '<a href="" onClick="">'+files[i].firstChild.nodeValue+'</a>';
peta
Profil
HGD
viz pmg
document.getElementById('vypis_souboru').innerHTML -> generuje string, string neni objekt a tim padem se to nemuze zpetne zapsat do objektu
Chamurappi
Profil
Reaguji na pmg:
Přiřazením vlastnosti innerHTML (což je řetězec) se tedy ztrácí její propojení s původním elementem.
Jen doplním, že i kdyby typ vlastnosti innerHTML nebyl primitivní a předávala se reference, tak pozdější přiřazení čehokoliv do téže proměnné referenci stejně zruší.
pmg
Profil
Chamurappi
Díky za vysvětlení, už jsem tomu možná přišel na kloub;-) Referencí se předávají všechny objekty, ale některé nemají metody, které by umožnily je změnit. Při úpravě se vytvoří nový objekt, který ten starý nahradí.
HGD
Profil
aha, tak díky moc

A mam ještě jeden dotázek, potřebuju přes to inerHTML vypsat do buňky soubory, ale vypisuje se to v cyklu, protože je použit AJAX, ale vypisuje se mi dycky až ten poslední vlastně z cyklu, jak se to pořád přepisuje, ale newim jak to přidat
pmg
Profil
var obsah = ''; // do této proměnné se v cyklu poskládá obsah

for (var i in response) { // procházení získaných dat, jen příklad
obsah += response[i].soubor; // do proměnné obsah se postupně přidají všechny soubory
}

document.getElementById('vypis_souboru').innerHTML = obsah;

Nevím, v jakém formátu data jsou a jak se procházejí, ale důležité je, že použitím += místo = se text přidá na konec řetězce v proměnné.

Možná by to celé šlo jednodušeji pomocí join. Když tak sem zkus poslat ten skript.
peta
Profil
obsah = x;
obsah += x;
obsah = obsah + x;
jakpsatweb - javascript - operace
HGD
Profil
nefunguje mi to, já sem na JS lempl :)

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 obsah;
      for(var i=0; i<=files.length; i++){
       obsah += files[i].firstChild.nodeValue;
      }
  document.getElementById('vypis_souboru').innerHTML = obsah;

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

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: