Autor | Zpráva | ||
---|---|---|---|
Charlie Profil |
#1 · Zasláno: 11. 6. 2006, 12:24:58 · Upravil/a: Charlie
Zdravím, dnes jsem se začal zabývat DOMem a přišel jsem na jednu zajímavou (z mého pohledu) věc.
Snažím se zpracovat xml soubor, který získám přes XMLHttpRequest. XML vypadá následovně: <?xml version="1.0" encoding="utf-8"?> Projíždím cyklem všechny [strong]task[/strong]y, nejprve se snažím získat text v <otazka>, takhle: var tasks = test.getElementsByTagName('task'); V Gecku v pořádku, v IE hodnota [i]null[i], proč? IE používá očividně nějaký jiný mechanismus pro zobrazení DOMu, co mám změnit, abych měl přístup k hodnotě <otazka>? |
||
Leo Profil |
#2 · Zasláno: 11. 6. 2006, 12:36:21
"test.getElementsByTagName('task');"
A odkud berete promennnou test? Dal, misto childNodes.item(0) pouzijte childNodes[0]. Dalsi vec, nektere prohlizece vytvari prazdne textove uzly mezi elementy, atd. Leo |
||
Charlie Profil |
#3 · Zasláno: 11. 6. 2006, 12:45:35
A odkud berete promennnou test?
Pardon, zapomněl jsem zmínit - proměnná test je objekt zpracovaný pomocí responseXML v XMLHTTPRequestu. Ty itemy změním, díky. |
||
Charlie Profil |
#4 · Zasláno: 11. 6. 2006, 13:12:14
Tak podle toho, co jsem zjistil, nezobrazuje IE prázdné nody, když Gecko zobrazí 5, IE jen 2.
Půlka problému je vyřešena, nicméně nastal jiný problém - v IE se nezobrazí tasky, tzn. nepřiřadí se k určenému elementu na stránce pomocí appendChild. Vše by to měla zajišťovat tato funkce: function appendTask(task) { Modlé mého názoru by to mohlo fungovat, ale IE zobrazí pouze <li>, obsah už ne. Možná je to proto, že se do něj snažím nacpat tabulku (!). Gecku to však nevadí. |
||
peta Profil * |
#5 · Zasláno: 11. 6. 2006, 20:15:14
task = document.createTextNoce("aaa") ?
=================================== ja treba pouzivam toto... var isIE=(document.all && !window.opera)?1:0; function objGet2(d,x) {d=d==0?document:d; return (d.getElementById?d.getElementById(x):d.all?d.all[x]:d.layers?d.layers [x]:null);} function objDel(o) {while (o.childNodes.length) {o.removeChild(o.childNodes[0]);}} //IE na TBODY nelze pouzit innerHTML function objEx(d,x) {return Boolean(objGet2(d,x))} function nodeEx(x,y,z) {return (Boolean(x) && x.nodeType==y && x.nodeName==z)} function creEL(d,x) {return d.createElement(x);} function appEL(d,x) {d.appendChild(x);} function addEL(d,x) { if (d.childNodes.length<1) {d.appendChild(x);} //IE.length=0 else {d.insertBefore(x,d.childNodes[0]);} } function creTN(d,x) {return d.createTextNode(x);} function creaddTN(d,o,x){var t=d.createTextNode(x);o.appendChild(t);} function setxEvent(x,xEvent,xFunction) { if (isIE) {x[xEvent]=new Function(xFunction);} //IE else {x.setAttribute(xEvent,xFunction);} //other } function creAhref(d,xHref,xTarget,xClick,xTitle,xText,xClass,xImg) { var o,t; o=d.createElement('A'); o.setAttribute('href' ,xHref); if (xHref !="") {o.setAttribute('target',xTarget);} if (xClick!="") {setxEvent(o,"onclick",xClick);} if (xClass!="") {o.className = xClass;} //IE+other if (xTitle!="") {o.setAttribute('title' ,xTitle);} if (xImg !="") {o.appendChild(xImg);} if (xText !="") {t = d.createTextNode(xText); o.appendChild(t);} return o; } function creImg(d,xSrc,xAlt,xWidth,xHeight) { var o = d.createElement('IMG'); o.setAttribute('src' ,xSrc); if (xAlt !="") {o.setAttribute('alt' ,xAlt);} if (xWidth !="") {o.setAttribute('width' ,xWidth);} if (xHeight!="") {o.setAttribute('height',xHeight);} return o; } ======= o1 = creEL(f,'B'); creaddTN(f,o1,tipBold+": "); o2 = creEL(f,'SPAN'); o2.className = 'tipText'; o2.innerHTML=tipText; o = objGet2(f,"tip"); objDel(o); appEL(o,o1); appEL(o,o2); |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0