Поиск XML с помощью JavaScript и отображение результатов в таблице

Для моего курса меня попросили создать html-страницу, обладающую функциональностью, позволяющей пользователю вводить имя контакта, который затем отправляет загружаемый ранее созданный мной xml-файл, просматривает контакты до тех пор, пока он не совпадет с первым. имя, введенное пользователем, и отображает контактную информацию, кроме адреса электронной почты, на той же странице, в таблице с заголовками и Отображение контактных данных :. Если нет совпадения, должно быть что говорит Контакт не существует.

Вот мой XML-файл:





    
        
            Bob
            Jones
        
        (02)44 42 45 63
        
            34 Highway Road
            Grovedale
            NSW
            3228
            [email protected]
        
    
    
        
            Gary
            Williams
        
        (02)44 41 87 56
        
            223 Yarra Avenue
            Branston
            NSW
            2317
            [email protected]
        
    

Я попробовал несколько вещей, но я понятия не имею, как мне получить данные для отображения в таблице. Ниже приведен мой XSL-файл, который, как я предполагаю, должен показывать таблицу, но с результатами поиска.







body {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 14px;
}
div {
    margin-left: 150px;
    margin-right: 20px;
    margin-top: 50px;
    width: 80%;
}
h1 {
    font-size: 24px;
    color: #F00;
}
.headings {
    background-color: #06F;
}
.data {
    background-color: #6F9;
}
.table {
    border: 2px solid #F00;
    width: 100%;
}




CONTACTS
    
        
            First Name
            Last Name
            Street
            City
            State
            Postcode
            Email
        
        
        
            
            
            
            
            
            
            
        
    






Я должен использовать JavaScript для поиска файла XML и создать таблицу, отображающую результаты поиска.

HTML у меня выглядит следующим образом:





Task 2

window.onload = loadIndex;
function loadIndex()
{
    if (document.implementation && document.implementation.createDocument)
    {
        xmlDoc = document.implementation.createDocument("", "", null);
        xmlDoc.load("Contact.xml");
    }
    else if (window.ActiveXObject)
    {
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async = "false";
        xmlDoc.load("Contact.xml");
    }
}
function searchIndex()
{
    if (!xmlDoc)
    {
        loadIndex();
    }
    var searchterm = document.getElementById("searchme").value;
    var allitems = xmlDoc.getElementsByTagName("firstname");
    results = new Array;
    for (var i=0;i
 ikis10 июн. 2013 г., 06:03
следитьэтот.
 Curley595910 июн. 2013 г., 05:10
Нигде в данный момент. Как я сказал. Я понятия не имею, с чего начать. Я отредактирую вышеизложенное к тому, что я думаю.
 Arun P Johny10 июн. 2013 г., 05:06
где функция?searchIndex
 Curley595910 июн. 2013 г., 05:17
Обновил код.
 Curley595910 июн. 2013 г., 06:18
Я надеялся на что-то более связанное с моей проблемой.

Ответы на вопрос(3)

 startString = firstname.substring(0,size);

Вот,firstname нет, где определить раньше для цикла, что 'почему давать ниже ошибку.

Uncaught TypeError: Невозможно прочитать свойство 'подстрока» неопределенного.

Я упоминал имя как переменную, подобную этой, перед startString.

firstname = xmlDoc.getElementsByTagName("firstname")[i].childNodes[0].nodeValue;
startString = firstname.substring(0,size);

После этого все заработало. Надеюсь, это поможет!

Решение Вопроса

Следующее - то, что я использовал, чтобы исправить проблемы, которые у меня были. Одна проблема, с которой я столкнулся, это тестирование локально. Она не будет работать. Это также ожидает сообщения, если контакт не найден. Я обновлю, когда найду решение.

ОБНОВЛЕНИЕ: Решение найдено. Смотрите обновленный код ниже:


function loadXMLDoc(dname)
{
    if (window.XMLHttpRequest)
    {
        xhttp=new XMLHttpRequest();
    }
    else
    {
        xhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xhttp.open("GET",dname,false);
    xhttp.send();
    return xhttp.responseXML;
} 
function searchXML()
{
    xmlDoc=loadXMLDoc("Contact.xml");
    x=xmlDoc.getElementsByTagName("firstname");
    input = document.getElementById("input").value;
    size = input.length;
    if (input == null || input == "")
    {
        document.getElementById("results").innerHTML= "Please enter a character or name!";
        return false;
    }
    for (i=0;i

Ваш ответ на вопрос