» »

javascript childNode textarea

javascript childNode textarea

BRBR ::

javascript childNode občasno, oziroma kakor se mu zdi najde textarea al pa tudi ne.

kopija iz enega drugega foruma:


The point is:
1. text area comes in package of bunch of child nodes that needs to be copyed to some other place. Source package beeing changed, textarea changing palce, ...
2.Copying that package works fine with innerHTML, but then in IE, it cant be inserted anything into that resulting innerHTML via DOM.
3. So I need to copy stuff via childNodes.cloneNode(true);

And that thing for some reason sometimes does not see textarea, I mean the cure could be just this difference.


Code:
<textarea id ="textarea" cols="70" rows="5"></textarea>


or

Code:
<textarea id ="textarea" cols="70" rows="5">
</textarea>




Zdej če ma kdo kak pameten komentar na to ? Vedno na koncu skompresiram HTML, tako da pri meni ne bo childNode nikoli našel textarea, razen če pogruntam kaj narest da ga bo kljub temu.
Tule je test link , kjer childNode ne najde textarea elementa:
link
Never underestimate the power of idiots in large groups.
  • spremenil: BRBR ()

Trinitron ::

Če paziš, da je pred in za textarea line break, pa ne bi smelo biti težav.

V spletnem programiranju je včasih pač treba izvajati kakšne trike in hacke da zadeva pravilno deluje v vseh brskalnikih. V tem primeru gre v bistvu še za zelo majhen bug, obstaja cela vrsta večjih, ki programerjem precej bolj otežujejo življenje - izdelovalci brskalnikov si pač vedno stvari predstavljajo po svoje, še najbolj so v tem specialisti pri Microsoftu.

milc ::

Če tako napišeš javascript, potem deluje neglede na vsebino.
for (var j=1; j<src.childNodes.length; j++) {
  alert(src.childNodes[j].id)
}

Trinitron ::

milc: Tudi ni prav, ker spusti prvi child. tako pa je ok:

for (var j=0; j<src.childNodes.length; j++) {  
alert(src.childNodes[j].id) 
}


Prej sem spregledal, da je šla for zanka samo do src.childNodes.length-1, torej zadnji node ni upoštevala v nobenem primeru. S praznimi vrsticami je delovalo, ker večina browserjev tudi whitespace upošteva kot node.

Dodatek: še to, edina posebnost textarea je v tem, da se z IE njene vsebine ne da dobiti z .innerHTML ampak samo z .value, kar pa deluje tudi v ostalih browserjih.

Zgodovina sprememb…

milc ::

Narediš okol en wrapper, ki zna sam pogruntat ali rabiš value ali ne in potem uporabljaš wrapper namesto direkt. Na žalost so implementacije DOMa od browserja do browserja enake razen v stvareh kjer niso enake :).

BRBR ::

for (var j=0; j<src.childNodes.length-1; j++) {

Da tole ni prav me moraš pa prepričat. Če jih je 3 in se indexiranje zažne z 0, potem obstajajo 0,1,2, length je potem 3 in tistale zanka mora biti taka kot je.
Never underestimate the power of idiots in large groups.

milc ::

BRBR: izhodni pogoj uporablja znak < (manjše) kar pomeni 0,1 če vzameva omenjen primer, če so 3, ker 2 < 3-1 je false. Torej 3 element z indeksom 2 odpade iz zanke.

BRBR ::

OK, to sem verjetno zabluzil ker je št elementov na raznih browserjih za isti html različno.
Never underestimate the power of idiots in large groups.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

AJAX kratke naloge

Oddelek: Izdelava spletišč
192274 (1741) Yacked2
»

PHP koda v JS

Oddelek: Izdelava spletišč
71087 (979) technolog
»

[HTML & JS] Povzemanje podatkov iz strani

Oddelek: Izdelava spletišč
6778 (718) Something
»

Javascript pomoč

Oddelek: Izdelava spletišč
202042 (1598) Lion29
»

JavaScript offsetTop in brskalniki

Oddelek: Izdelava spletišč
8989 (921) shorvat

Več podobnih tem