Autor Zpráva
pik
Profil *
Dobry den,
mam jeden problem. Potreboval bych pomoci jedne promene predavat DOM uzly. Zkousel jsem pomoci object a array a bezvysledne

Priklad:
test = function () {
var uzel1 = document.createElement ('p')
var uzel1Text = document.createTextNode ('dasdas dasdsa');
uzel1.appendChild (uzel1);

var uzel2.....

predanaPromena = new Object ();

predanaPromena.Uzel1 = uzel1;
predanaPromena.Uzel2 = uzel2;

uzel1.onclick = function () { click(predanaPromena); }
document.appendChild (uzel1);...
}

click = function (events) {
// ted je tu problem pracovat s tim uzlen, nemohu mu pridavat class nebo meni onclick atd..
events.Uzel1.onclick = function () { click2 (); }
events.Uzel2.onclick = function () { click2 (); }
}

A tohle mi bouzel uz nejde:(
Oswald
Profil
Na tohle je ideální DocumentFragment:


var predanaPromena = document.createDocumentFragment();

predanaPromena.appendChild(uzel1);
predanaPromena.appendChild(uzel2);
// ...
document.body.appendChild(predanaPromena);
peta
Profil
pik
Neni mi jasne, co chces docilit?
Uzel, ktery neni navazan na dokument na nejaky dalsi jakokdyby nebyl.
Dalsi zajimavosti je, ze IE, FF, O se chova kazda jinak pri odesilani na pozadi, pokud pracujes s iframy a documentu. Chova se to jakoby dokument neuzavrel.

Proste jednoducha vec...
d = iframeXX.document;
d.write(...nejaky formular...)
d.formular.submit()
a maler, tohle uz muze zlobit
a pak chces jeste navratovou funkci, nedejboze. No, strasne mne to zlobilo.
Vsechno fungovalo, v IE, kdyz jsem pridal alert(). Z nejakeho, mi zahadneho duvodu dokument uzavrel a vse probehlo jako ve firefox.
Timto zpusobem jsem treba vytvarel skryty iframe pro odeslani http pozadavku.
pik
Profil *
Oswald: bohuzel to neni moc pouzitelne v nekterych prohlizeci
peta:

Samozrejme, ze jsou prilozeny do dokumentu ty uzly. Jen bych proste rad predaval vice referenci v jedne promene. Abych nemusel psalt

click = function (referenceProUzel1, referenceProUzel2) {
.........
}

aby stacilo

click = function (referenceUzlu) {
....
}

Proste je zapouzdrit do nejakeho pole nebo objektu. V normalni Jave nebo C# to funguje. Tady v JavaScriptu zjevne ne :(
los
Profil *
Samozrejme, že v JavaScripte to funguje. Problém je, že nikde nevidím kedy a v akom kontexte tú premennú deklaruješ kľúčovým slovom var. Ďalší problém je, že "to nefunguje" je dosť všeobecný opis problému...

Je dosť možné, že premenná predanaPremenna je v tých funkciách stále jedna a tá istá premenná a keď s ňou ďalej pracuješ, tak si vlastne zmeníš aj hodnoty v obslužných funkciách (viď JavaScript closures).
Toto téma je uzamčeno. Odpověď nelze zaslat.