webForumDet fria alternativet

Vad betyder felmeddelandet "Fel: xmlTOAviserad[i].text has no properties"

JavaScript

21 svar · 733 visningar · startad av Pedda

Medlem sedan juni 20006 031 inlägg
Frågan#1

Felkonsollen i FF säger "Fel: xmlTOAviserad*.text has no properties
Källkodsfil: file:///C:/.../search_result.html
Rad: 152"

Koden på rad 152 är:
var splittedAvi = xmlTOAviserad*.text.split("T")

IE ger inget felmeddelande.**

Medlem sedan dec. 20025 483 inlägg
#2

Det innebär med stor sannolikhet att xmlTOAviserad är null. Se vad alert(xmlTOAviserad) ger.**

Medlem sedan juni 20006 031 inlägg
#3

Jag har kollat i xmlfilen och den är inte null utan allt ser helt ok ut.
Händer ingenting om jag lägger in en alert.

Medlem sedan dec. 20025 483 inlägg
#4

Har du lagt alert():en innan rad 152?

Medlem sedan dec. 19996 721 inlägg
#5

Det är väl snarare .text som är null/odefinierad.

Installera FireBug nu!

Medlem sedan juni 20006 031 inlägg
#6

Installerade FireBug, är nog tvungen att kolla runt lite innan jag fattar hur den fungerar.

Medlem sedan dec. 20025 483 inlägg
#7

emission skrev:

Det är väl snarare .text som är null/odefinierad.

Sant.

Medlem sedan dec. 19996 721 inlägg
#8

Pedda skrev:

Installerade FireBug, är nog tvungen att kolla runt lite innan jag fattar hur den fungerar.

När du väl gjort det blir din dag förgylld! :)

Medlem sedan juni 20006 031 inlägg
#9

Ok.
Jag la en breakpoint ett par rader upp och stegade mig ner.
På rad 152 har xmlTOAviserad*.text värdet "2005-01-25T16:38:14+01:00"
precis som det ska.
Går jag vidare till nästa rad så slängs jag ut på en gång.*

Medlem sedan juni 20014 421 inlägg
#10

Prova att skriva om det såhär:

x=xmlTOAviserad[i]
var splittedAvi = x.text.split("T")

Brukar kunna avhjälpa sådana fel. :)

Medlem sedan juni 20006 031 inlägg
#11

samma sak

Medlem sedan juni 20014 421 inlägg
#12

kan du köra en alert på:
x=xmlTOAviserad
alert(x)
alert(x.text)
alert(typeof x.text)

Medlem sedan juni 20014 421 inlägg
#13

Annars, kan vi få se hur hela koden ser ut och ett exempel på en xml-fil du hämtar in?

Medlem sedan juni 20006 031 inlägg
#14

colione skrev:

kan du köra en alert på:
x=xmlTOAviserad
alert(x)
alert(x.text)
alert(typeof x.text)

[object Element]
undefined
undefined

Borde ju inte vara undefined, Firebug visade ju att den hade ett värde

Medlem sedan dec. 20042 245 inlägg
#15

Testa .textContent istället för .text.

Medlem sedan juni 20006 031 inlägg
#16

undefined

Även IE ger felmeddelande då

Så här ser funktionen ut nu, inte den snyggaste koden. :r

	function searchXMLforAviserade(af, df, mf, uf, ufa, ufm, ufs)
	{
	    xmlDoc=loadXMLDoc("doclist.xml");
		var xmlTyp = xmlDoc.getElementsByTagName('to_typ');
		var xmlMateriel = xmlDoc.getElementsByTagName('to_mtrl');
		var xmlGrupp = xmlDoc.getElementsByTagName('to_grupp');
		var xmlLopnummer = xmlDoc.getElementsByTagName('to_lopnr');
		var xmlVersion = xmlDoc.getElementsByTagName('to_versioner');
		var xmlFbet = xmlDoc.getElementsByTagName('to_fbet');
		var xmlArendemening = xmlDoc.getElementsByTagName('to_arendemening');
		var xmlTillhorighet = xmlDoc.getElementsByTagName('to_tillh');
		var xmlModprio = xmlDoc.getElementsByTagName('to_klass');
		var xmlKod = xmlDoc.getElementsByTagName('to_kod');
		var xmlGiltig = xmlDoc.getElementsByTagName('to_giltig');
		var xmlFaststalld = xmlDoc.getElementsByTagName('to_faststalld');
		var xmlMediaNo = xmlDoc.getElementsByTagName('MediaNo');
		var xmlFileLocation = xmlDoc.getElementsByTagName('a_webc_url');
		var xmlFil = xmlDoc.getElementsByTagName('a_content_type');
		var xmlToBeteckning = xmlDoc.getElementsByTagName('object_name');
		var xmlFolderPath = xmlDoc.getElementsByTagName('r_folder_path');
		var xmlSize = xmlDoc.getElementsByTagName('r_content_size');
		var xmlAviserad = xmlDoc.getElementsByTagName('aviserad_date');
		var xmlTOAviserad = xmlDoc.getElementsByTagName('to_avisering');
    		
		var count = 1;

		for (i = 0; i < xmlMediaNo.length; i++)
		{	
		    var sTyp = xmlTyp[i].text;
		    var sMateriel = xmlMateriel[i].text;
    		var sGrupp = xmlGrupp[i].text;
    		var sLopnummer = xmlLopnummer[i].text;
    		var sVersion = xmlVersion[i].text;
    		var sFbet = xmlFbet[i].text;
    		var sArendemening = xmlArendemening[i].text;
    		var sTillhorighet = xmlTillhorighet[i].text; 
    		var sModprio = xmlModprio[i].text;
    		var sKod = xmlKod[i].text;
    		var sAviseradDate = xmlAviserad[i].text;
    		var sTOAviserad = xmlTOAviserad[i].text;
    		var sGiltig = xmlGiltig[i].text;
    		var sSize = '0';
    		var sFaststalld = xmlFaststalld[i].text;
    		   		
    		if (sTOAviserad != "1900-01-01T00:00:00+01:00") {
    		    var splittedAvi = sTOAviserad.split("T")
    		    sTOaviserad = splittedAvi[0];
    		} else {
                sTOaviserad = '';
            }
            
    		if (sGiltig != "1900-01-01T00:00:00+01:00") {
    		    var splittedGiltig = sGiltig.split("T")
    		    sGiltig = splittedGiltig[0];
    		} else {
                sGiltig = '';
            }
            
            if (xmlSize[i].text != "0") {
    		    sSize = xmlSize[i].text;
    		}
            
            if (sFaststalld == "1900-01-01T00:00:00+01:00") {
                sFaststalld = '';
            }
            
    		sMediaNo = xmlMediaNo[i].text; 
    		sFil = xmlFil[i].text;	
    		
    		if(sTyp.length == 0) {
    		    sTyp = ".........";
    		}
    		
			if(sTyp.toUpperCase() == af || sTyp.toUpperCase() == df || sTyp.toUpperCase() == mf || sTyp.toUpperCase() == uf || sTyp.toUpperCase() == ufa || sTyp.toUpperCase() == ufm || sTyp.toUpperCase() == ufs && sAviseradDate <= sTOaviserad)
			{
			    var elementSelect = document.getElementById('hitTable');
			    var tb=document.createElement('tbody'); 
			    var tr = document.createElement('tr');
			    
			    var tdNumb = document.createElement('td');
			    tdNumb.className = "list_table_cell";	
			    var tdNumber = document.createTextNode(count);	
                tdNumb.appendChild(tdNumber);
                
                var tdTitel = document.createElement('td');
			    tdTitel.className = "list_table_cell";		
                var tdTitelText = document.createTextNode(xmlToBeteckning[i].text);
                tdTitel.appendChild(tdTitelText); 
                
                var tdArendemening = document.createElement('td');
                tdArendemening.className = "list_table_cell";
                var tdArendemeningText = document.createTextNode(xmlArendemening[i].text);	
                tdArendemening.appendChild(tdArendemeningText);
                
                var tdGiltig = document.createElement('td');
                tdGiltig.className = "list_table_cell";
                var tdGiltigText = document.createTextNode(sGiltig);	
                tdGiltig.appendChild(tdGiltigText);
                
                var tdModprio = document.createElement('td');
                tdModprio.className = "list_table_cell";
                var tdModprioText = document.createTextNode(xmlModprio[i].text);	
                tdModprio.appendChild(tdModprioText);
                
                var tdKod = document.createElement('td');
                tdKod.className = "list_table_cell";
                var tdKodText = document.createTextNode(xmlKod[i].text);	
                tdKod.appendChild(tdKodText);
                 					
                var tdMetadata = document.createElement('td');
                tdMetadata.className = "list_table_cell";
                var newLink=document.createElement('a');
                newLink.setAttribute('href',xmlFolderPath[i].text + '/' + xmlFbet[i].text + '_mtd_sm.html');
                newLink.setAttribute('target', 'banner');
                var linkText=document.createTextNode('Metadata');
                newLink.appendChild(linkText); 
                tdMetadata.appendChild(newLink);
                
                if(sFil != null && sFil != "" && sFil != 'contentless')
                {
                    // välj bild
                    switch(xmlFil[i].text){
                    case "pdf":
                        var img = '../images/pdficonsm.gif';
                        break;
                    case "doc", "msw6":
                        var img = '../images/dociconsm.gif';
                        break;
                    case "tif", "jpg":
                        var img = '../images/tificonsm.gif';
                        break;
                    case "html", "htm":
                        var img = '../images/htmliconsm.gif';
                        break;
                    case "", "contentless":
                        var img = '../images/othericonsm.gif';
                        break;
                    case "zip":
                        var img = '../images/doc_zip.gif';
                        break;
                    default:
                        var img = '../images/othericonsm.gif';
                    }
                    //skapa länk
                    var tdFil = document.createElement('td');
                    tdFil.className = "list_table_cell";
                    var image = document.createElement('img');
                    image.setAttribute('src', img);
                    image.setAttribute('border', 0);
                    var newFileLink=document.createElement('a');
                    newFileLink.setAttribute('href', "javascript:resolveLink('"+xmlFileLocation[i].text+"','"+xmlMediaNo[i].text+"')");
                    //newFileLink.setAttribute('target', 'main');
                    var newFileLinkText=document.createTextNode('  ' + xmlFil[i].text.toUpperCase() + ' (' + Math.round(sSize/1024) + ' KB)');
                    newFileLink.appendChild(newFileLinkText); 
                    tdFil.appendChild(image);
                    tdFil.appendChild(newFileLink);
                }
                else
                {
                    var tdFil = document.createElement('td');
                    tdFil.className = "list_table_cell";
                    var tdFilText = document.createTextNode('(Fil saknas)');	
                    tdFil.appendChild(tdFilText);
                }
                 					
                tr.appendChild(tdNumb); 
                tr.appendChild(tdTitel);
                tr.appendChild(tdArendemening);
                tr.appendChild(tdGiltig);
                tr.appendChild(tdModprio);
                tr.appendChild(tdKod);
                tr.appendChild(tdMetadata);
                tr.appendChild(tdFil);
                 
                tb.appendChild(tr);						
                elementSelect.appendChild(tb); 
                
                count++;	
			}
		}
    }
Medlem sedan juni 20014 421 inlägg
#17

Lite referens xml och hur du anropar funktionen vore kanon det med. :)

Jag antar att du använder w3 schools loadXMLdoc-funktion?
http://www.w3schools.com/dom/loadxmldoc.asp

Medlem sedan juni 20006 031 inlägg
#18

Var tvungen att rusa till bussen, men nu är det en ny dag med nya tag. :)

Japp, det är koden från w3schools som jag använder.

En nerbantad version av xml filen

<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <Doc>
    <a_webc_url>ALLM/510/AF ALLM 510-1D.pdf</a_webc_url>
    <a_content_type>pdf</a_content_type>
    <aviserad_date>2007-05-24T00:00:00+02:00</aviserad_date>
    <to_giltig>1900-01-01T00:00:00+01:00</to_giltig>
    <to_klass>V</to_klass>
    <object_name>AF ALLM 510-1D</object_name>
    <r_content_size>156744</r_content_size>
    <r_folder_path>ALLM/510</r_folder_path>
    <to_sakbyra>TC Logistik</to_sakbyra>
    <to_sakhandl>VO Log Harri Aaltonen</to_sakhandl>
    <to_fbet>M7784-009450</to_fbet>
    <to_typ>AF</to_typ>
    <to_mtrl>ALLM</to_mtrl>
    <to_grupp>510</to_grupp>
    <to_lopnr>1</to_lopnr>
    <to_order>1</to_order>
    <to_status>FASTSTÄLLD</to_status>
    <to_sid>8</to_sid>
    <to_utg>D</to_utg>
    <to_avisering>2005-04-19T17:09:56+02:00</to_avisering>
    <to_faststalld>2005-04-13T00:00:00+02:00</to_faststalld>
    <r_current_state>1</r_current_state>
    <to_arendemening>Oförstörande provning vid FV förband/, andra enheter</to_arendemening>
    <to_tillh />
    <to_versioner />
    <to_kod>E</to_kod>
    <to_upphavd_orsak xml:space="preserve"></to_upphavd_orsak>
    <MediaNo>1</MediaNo>
  </Doc>
  <Doc>
    <a_webc_url>ALLM/520/AF ALLM 520-3E.pdf</a_webc_url>
    <a_content_type>pdf</a_content_type>
    <aviserad_date>2007-05-24T00:00:00+02:00</aviserad_date>
    <to_giltig>1900-01-01T00:00:00+01:00</to_giltig>
    <to_klass>V</to_klass>
    <object_name>AF ALLM 520-3E</object_name>
    <r_content_size>1002779</r_content_size>
    <r_folder_path>ALLM/520</r_folder_path>
    <to_sakbyra>TC Logistik</to_sakbyra>
    <to_sakhandl>KC Skydd BI Harri Aaltonen</to_sakhandl>
    <to_fbet>M7784-009317</to_fbet>
    <to_typ>AF</to_typ>
    <to_mtrl>ALLM</to_mtrl>
    <to_grupp>520</to_grupp>
    <to_lopnr>3</to_lopnr>
    <to_order>3</to_order>
    <to_status>FASTSTÄLLD</to_status>
    <to_sid>19</to_sid>
    <to_utg>E</to_utg>
    <to_avisering>2005-04-19T17:08:58+02:00</to_avisering>
    <to_faststalld>2005-04-13T00:00:00+02:00</to_faststalld>
    <r_current_state>1</r_current_state>
    <to_arendemening>Låsning av konstruktionsleement med, låstråd och låsvajer</to_arendemening>
    <to_tillh />
    <to_versioner />
    <to_kod>E</to_kod>
    <to_upphavd_orsak xml:space="preserve"></to_upphavd_orsak>
    <MediaNo>1</MediaNo>
  </Doc>
</NewDataSet>
Medlem sedan juni 20014 421 inlägg
#19

Funktionen nertagen till det väsentliga:

function searchXMLforAviserade()
	{
	    xmlDoc=loadXMLDoc("foo.xml");
		var xmlTOAviserad = xmlDoc.getElementsByTagName('to_avisering');

		for (i = 0; i < xmlTOAviserad.length; i++)
		{	

    		var sTOAviserad = xmlTOAviserad[i].firstChild.nodeValue;
		alert(sTOAviserad)
    		   if (sTOAviserad != "1900-01-01T00:00:00+01:00") {
    		    var sTOaviserad = sTOAviserad.split("T")[0];
    		    alert(sTOaviserad);
    		} else {
                sTOaviserad = '';
            }
            }
            
  
    }
}
Medlem sedan juni 20006 031 inlägg
#20

Den spottar ur sig datumen som den ska

287 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
150 ms — hämta tråd, inlägg och bilagor (db)
133 ms — ändringar (db)