Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > работа с html файлами DOM


Автор: patience 18.9.2006, 17:27
Дело вот в чём:
скрипт, который читает html файлы и выбирает из них опред. информацию. 
в  строке адреса receiver.html?data.html
data.html - файл с инфой
код ниже...
но, одноко, не работает... ( заголовок таблицы выводит,а информацию нет...,

htmldoc.getElementsByTagName("td"); 
htmldoc.getElementsByTagName("small");       - говорит что равно нулю...

хотя в документе точно содержаться таблицы.


Код


<head><title></title>
<script language="JavaScript">
function loadHTML(url, handler) {
    if (document.implementation && document.implementation.createDocument) {
        var htmldoc = document.implementation.createHTMLDocument("");        
        htmldoc.onload = function() { handler(htmldoc, url); }       
        htmldoc.load(url);        
    }   
    else if (window.ActiveXObject) { 
        var htmldoc = new ActiveXObject("Microsoft.XMLDOM");   // Create doc.
        htmldoc.onreadystatechange = function() {              // Specify onload
            if (htmldoc.readyState == 4) handler(htmldoc, url);
        }
        htmldoc.load(url);                                     // Start loading!
    }
} 
function makeTable(htmldoc, url) {
    // Create a <table> object and insert it into the document.
    var table = document.createElement("table");
    table.setAttribute("border", "1");
    document.body.appendChild(table);
  
    var caption = "Sostav iz " + url;
    table.createCaption().appendChild(document.createTextNode(caption));
    var header = table.createTHead();
    var headerrow = header.insertRow(0);
    headerrow.insertCell(0).appendChild(document.createTextNode("Place"));
    headerrow.insertCell(1).appendChild(document.createTextNode("City"));
    headerrow.insertCell(2).appendChild(document.createTextNode("OnLine"));    
    
        
    var city = "", online="", place="";
   [B] var tegs = htmldoc.getElementsByTagName("td");   [/B] //alert(tegs.length) - говорит что = нулю.. (
    alert(tegs.length); 
    for(var i = 0; i < tegs.length; i++) {        
        var t = tegs[i]; 
                   
        if(t.childNodes.length == 3)
           if(t.firstChild.nodeType == 3)
           {
              var infoT = t.firstChild.data;  
              if(info.substring(0,5)=="some text")
              city = t.getElementsByTagName("b")[0].fisrtChild.data;
           }    
    }  
   [B] tegs = htmldoc.getElementsByTagName("small");   [/B]
    alert(tegs.length);
    for(var i = 0; i < tegs.length; i++) {        
        var s = tegs[i];             
        if(s.childNodes.length == 1)
        {
           if(s.firstChild.nodeType == 3)
           {
              var infoS = s.firstChild.data;  
              if(infoS=="some text" || infoS=="some text")
              online = infoS;
           }
        }
        else
           if((s.childNodes.length == 2) && (s.lastChild.nodeType == 3))   
           {
              place = s.lastChild.data;
           }
    }
    
    var row = table.insertRow(i+1);
    row.insertCell(0).appendChild(document.createTextNode(place));
    row.insertCell(1).appendChild(document.createTextNode(city));
    row.insertCell(2).appendChild(document.createTextNode(online));    
}
</script>
</head>

<body onload="loadHTML(location.search.substring(1), makeTable)">
</body>





Зарание благодарен за помощь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)